结构体是C语言中一种类似于类的变量;
关键字为struct;
定义方式:
struct student
{
char name[10];
int age;
bool gender;
}
设置字节对齐,使用#pragma pack()
#pragma pack(1) // 让编译器做1字节对齐
struct student
{
char name[10];
int age;
bool gender;
}
#pragma pack() // 取消1字节对齐,恢复为默认对齐
------------------------------------------------------------------------------------------------
这里是头文件结构的定义:
一个非字节对齐结构体_tagTest2
一个字节对齐_tagTest3
(使用#pragma pack(push,1)来使字节以1个来对齐 , 使用#pragma pack(pop)来还原默认)
#pragma once
struct _tagTest1
{
};
//非字节对齐的结果
struct _tagTest2
{
int n1;
char ch1;
float f1;
char szName[21];
_tagTest1* pTag;
};
#pragma pack(push,1)
//_tagTest3和2是一样的结构,字节对齐后的结果
struct _tagTest3
{
int n1;
char ch1;
float f1;
char szName[21];
_tagTest1* pTag;
};
#pragma pack(pop)