Visual c++ VisualC++ 2008中的结构成员对齐 VisualC++,让您在项目的属性页中选择StUrt成员对齐。问题是,此配置正用于项目中的所有srtruct

Visual c++ VisualC++ 2008中的结构成员对齐 VisualC++,让您在项目的属性页中选择StUrt成员对齐。问题是,此配置正用于项目中的所有srtruct,visual-c++,struct,memory-alignment,Visual C++,Struct,Memory Alignment,我想,有没有什么特定于VC++的方法可以单独设置某个结构的成员对齐方式 #pragma pack 对于真正特定的结构对齐,您可以随意填充字节 因此,在各个字段之间添加一些虚拟字节,直到对齐符合您的需要 例如: 结构示例 { 无符号短x; 字节dummy1; 字节dummy2; 字节dummy3; 字节dummy4; 字节dummy5; 字节dummy6; 无符号整数y; }; 如果虚拟字节没有被放置,int可能被放置在结构开头的偏移量4字节上,而现在它被放置在偏移量8上 waring:非常特定

我想,有没有什么特定于VC++的方法可以单独设置某个结构的成员对齐方式

#pragma pack

对于真正特定的结构对齐,您可以随意填充字节

因此,在各个字段之间添加一些虚拟字节,直到对齐符合您的需要

例如:

结构示例 { 无符号短x; 字节dummy1; 字节dummy2; 字节dummy3; 字节dummy4; 字节dummy5; 字节dummy6; 无符号整数y; };

如果虚拟字节没有被放置,int可能被放置在结构开头的偏移量4字节上,而现在它被放置在偏移量8上


waring:非常特定于编译器,代码实践很糟糕^

不,gcc也承认pragma从来都不是标准的,因为它们被定义为实现定义的。但是,GCC也支持它们: