/Zp(结构成员对齐)

控制如何将结构成员打包到内存中,并在模块中为所有结构指定同一包装。

语法

/Zp[1|2|4|8|16]

注解

/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 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“代码生成”属性页面

  3. 修改“结构成员对齐”属性

以编程方式设置此编译器选项

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法