/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
プラグマを使用することも可能です。 アラインメントの詳細については、次のトピックを参照してください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コード生成] プロパティ ページを選択します。
[構造体メンバーのアラインメント] プロパティを変更します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。StructMemberAlignment