我为一些数据结构编写了一个解析器,经过几个小时的调试后我发现问题是Visual Studio没有像我说的那样解释结构。似乎使用了一些“填充”
struct foo {
unsigned char a; //0x00
unsigned char b; //0x01
unsigned int c; //0x02
unsigned int d; //0x06
unsigned int e; //0x0A
unsigned int f; //0x0E
//0x12
};
我预计“sizeof(foo)= 4 * 4 + 2 = 18”,但我得到“sizeof(foo)= 20”。是否有可能为这个特殊结构转换填充?我试过了
__declspec(align(1)) struct foo { ...
但它不起作用。谢谢你的帮助。
答案 0 :(得分:35)
使用#pragma pack
指令:
#pragma pack(push, 1)
struct foo {
// etc..
};
#pragma pack(pop)
答案 1 :(得分:2)
Visual Studio 2010有#pragma pack
来执行您正在寻找的内容。