作用:屏蔽掉编译器为变量设定的默认的对其方式,设定自己的对其方式
而#pragma pack(n)
表示设定变量以n字节对其。
- 如果n大于等于该变量所占的字节数,那么偏移量必须满足默认的对其方式
- 如果n小于该变量的类型所占用的字节数,那么偏移量为n 的整数倍,不用满足默认的对其方式。
结构体的总大小也有个约束条件:
- 如果n大于所有的成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数
- 如果n小于所有成员变量类型所占用的字节数,那么必须为n的倍数。
举例说明:1
2
3
4
5
6
7
8
9
10
11
strust test
{
char m1;
double m4;
int m3;
}