/Zp (Выравнивание члена структуры)/Zp (Struct Member Alignment)

Управляет упаковкой элементов структуры в память и задает одну и ту же упаковку для всех структур в модуле.Controls how the members of a structure are packed into memory and specifies the same packing for all structures in a module.

СинтаксисSyntax

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

RemarksRemarks

Параметр /ZpN указывает компилятору, где должен храниться каждый элемент структуры.The /ZpN option tells the compiler where to store each structure member. Компилятор сохраняет элементы после первого элемента по границе, которая представляет собой меньшее из двух значений: размер типа элемента и N байт.The compiler stores members after the first one on a boundary that's the smaller of either the size of the member type, or an N-byte boundary.

Возможные значения упаковки описаны в следующей таблице:The available packing values are described in the following table:

Аргумент /Zp/Zp argument ДействиеEffect
11 Упаковывает структуры по 1-байтовым границам.Packs structures on 1-byte boundaries. Эквивалентно /Zp .Same as /Zp.
22 Упаковывает структуры по 2-байтовым границам.Packs structures on 2-byte boundaries.
44 Упаковывает структуры по 4-байтовым границам.Packs structures on 4-byte boundaries.
88 Упаковывает структуры по 8-байтовым границам (используется по умолчанию для x86, ARM и ARM64).Packs structures on 8-byte boundaries (default for x86, ARM, and ARM64).
1616 Упаковывает структуры по 16-байтовым границам (используется по умолчанию для x64).Packs structures on 16-byte boundaries (default for x64).

Не используйте этот параметр, если не заданы конкретные требования к выравниванию.Don't use this option unless you have specific alignment requirements.

Предупреждение

В заголовках C/C++ в Windows SDK предполагается внутренняя упаковка /Zp8 .The C/C++ headers in the Windows SDK assume /Zp8 packing internally. Не изменяйте значение параметра по умолчанию при включении заголовков Windows SDK с помощью /Zp в командной строке или с помощью #pragma pack.Don't change the setting from the default when you include the Windows SDK headers, either by using /Zp on the command line or by using #pragma pack. В противном случае во время выполнения приложения может произойти повреждение памяти.Otherwise, your application may cause memory corruption at runtime.

Для управления упаковкой структур также можно использовать pack pragma.You can also use the pack pragma to control structure packing. Дополнительные сведения о выравнивании см. в разделах:For more information about alignment, see:

Установка данного параметра компилятора в среде разработки Visual StudioTo set this compiler option in the Visual Studio development environment

  1. Откройте диалоговое окно Страницы свойств проекта.Open the project's Property Pages dialog box. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.For details, see Set C++ compiler and build properties in Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации > C/C++ > Создание кода.Select the Configuration Properties > C/C++ > Code Generation property page.

  3. Измените свойство Выравнивание элемента структуры.Modify the Struct Member Alignment property.

Установка данного параметра компилятора программным способомTo set this compiler option programmatically

См. такжеSee also

Параметры компилятора MSVC MSVC Compiler Options
Синтаксис командной строки компилятора MSVCMSVC Compiler Command-Line Syntax