pragma pack(2)
是什么意思?
它是做什么用的?
这意味着结构体、联合体或类的对齐方式为2字节。这意味着,下面的结构体将在内存中使用3个字节而不是2个字节:
struct MyStruct
{
char Field1;
char Field2;
};
struct MyStruct
{
WORD Field1;
WORD Field2;
};
这意味着编译器应该对结构体/类/联合体成员进行打包,以便它们在2字节边界上对齐。
struct Foo {
char c1;
int i1;
};
使用pack(2),结构体将会有以下内容:
请注意,所有的编译指示都是特定于编译器的 - 这个可以在VC和gcc上工作。
这意味着在紧随第一个结构成员之后的pragma声明之后声明的结构、类或联合的每个成员都存储在成员类型大小的倍数或2字节边界的倍数中,以较小者为准。
#pragma pack(n)将影响其后的结构、类和联合的大小。
如果您在文件级别使用它,最好在更改之前保存打包对齐方式,并在应用新的打包对齐方式的声明结束时将其恢复到先前的值。
当然,您应该查看编译器文档。
对于MS VS 6.0:请参见此处。
pragma pack(2)
struct SIZE { int i; char ch ; double db ; } main () { printf ( "%d\n",sizeof(struct SIZE) ); } - phoenix#pragma pack(pop)
就是你要找的。 - Daniel Hilgarth