【发布时间】:2022-01-08 04:42:15
【问题描述】:
我为某些数据结构编写了一个解析器,经过数小时的调试后,我发现问题是 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 { ...
但它不起作用。感谢您的帮助。
【问题讨论】:
-
你用
/Zp 1编译吗? -
@MartinBroadhurst 这将全局禁用填充,hans 的解决方案有效。
标签: c++ visual-studio visual-studio-2010