/Zp(结构成员对齐)
控制如何将结构成员打包到内存中,并在模块中为所有结构指定同一包装。
语法
]$
注解
/ZpN
选项指示编译器存储每个结构成员的位置。 编译器在边界上的第一个后存储成员,这是以下项中较小的项:成员类型大小或 N 字节边界。
下表中描述了可用的包装值:
/Zp 参数 | 效果 |
---|---|
1 | 在 1 字节边界上打包结构。 与 /Zp 相同。 |
2 | 在 2 字节边界上打包结构。 |
4 | 在 4 字节边界上打包结构。 |
8 | 在 8 字节边界上打包结构(x86、ARM 和 ARM64 的默认设置)。 |
16 | 在 16 字节边界上打包结构(x64 和 ARM64EC 的默认设置)。 |
如果没有特定的对齐要求,请不要使用此选项。
警告
Windows SDK 中的 C/C++ 标头假定使用平台的默认对齐方式。 当包含 Windows SDK 标头时,请不要通过在命令行上使用 /Zp
或使用 #pragma pack
更改设置的默认值。 否则,应用程序可能会导致运行时出现内存损坏。
还可以使用 pack
pragma 来控制结构打包。 有关对齐的详细信息,请参阅:
在 Visual Studio 开发环境中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“代码生成”属性页面。
修改“结构成员对齐”属性。