#pragma pack
pragma 指令の概要:インデックス への移動
目次
構文 (「疑似文法」を参照)
#pragma pack([{push | pop}[,]] [identifier[,]] [n])
説明
#pragma pack(n)
指令は,#pragma option
指令を -a
コンパイラオプションとともに使う場合と同じ働きを持ちます。n
は,格納メモリにあるデータをコンパイラがどのように並べるかを決定するバイトアラインメントです。 詳細については,-a
コンパイラオプションを参照してください。#pragma pack を push および pop 引数を伴って使用すると,push および pop
を使った #pragma pack
指令と同じ機能を持たせることができます。
次の表に #pragma pack
と #pragma option
の両指令の比較を示します。
#pragma pack | #pragma option |
---|---|
#pragma pack(n) |
#pragma option -an |
#pragma pack(push, n) |
#pragma option push -an |
#pragma pack(pop) |
#pragma option pop |
#pragma pack
指令は,push または pop を伴って使用すべき識別子引数もサポートしています。
引数なしの #pragma pack
#pragma pack()
#pragma pack
を引数なしで使用すると,パッキングサイズを先頭の -aX アラインメント(デフォルトは 8)に設定します。 すべてのコマンドラインオプションが処理されると,先頭の -aX アラインメントはコンパイルの先頭のアラインメントと見なされます。
値 n を伴う #pragma pack
#pragma pack(8)
#pragma pack
に値 n を伴って使用すると,現在のアライメントを n に設定します。‘n’の有効なアラインメントは,1,2,4,8,および 16 です。
push を伴う #pragma pack
#pragma pack(push)
#pragma pack
に push を伴って使用すると,アラインメントの内部スタック上で現在のアラインメントをプッシュします。
push, identifier を伴う #pragma pack
#pragma pack(push, ident)
#pragma pack
に push と識別子を伴って使用すると,プッシュされたアラインメントを 'identifier' に関連付けます。
push と n を伴う #pragma pack
#pragma pack(push, 8) #pragma pack(push, ident, 8)
#pragma pack
に値 'n' 付きの push を伴って使用すると,pragma pack push または pragma pack push identifier を実行してから,現在のアラインメントを 'n' に設定します。
pop を伴う #pragma pack
#pragma pack(pop)
#pragma pack
に pop を伴って使用すると,アラインメントスタックをポップして,アラインメントを最後にプッシュされたアラインメントに設定します。 pop が対応する push を見つけられない場合には,アラインメントスタック全体がポップされ,警告が発行され,アラインメントが先頭の -aX アラインメントに戻されます。
pop, identifier を伴う #pragma pack
#pragma pop(pop, ident)
#pragma pack
に pop と識別子を伴って使用すると,識別子が見つかるまでスタックをポップし,そのアラインメントを対応する直前の #pragma pack(push, identifier)
でプッシュされたアラインメントに設定します。 識別子を伴う pop が識別子を伴う対応する push を見つけられない場合には,アラインメントのスタック全体がポップされ,次の警告がユーザーに対して発行されます。
W8083 Pragma pack pop with no matching pack push
このアラインメントは次に,先頭の -aX アラインメントにリセットされます。
pop と n を伴う #pragma pack
#pragma pack(pop, 8) #pragma pack(pop, ident, 8)
#pragma pack
に pop と値 'n' を伴って使用すると,pragma pack pop または pragma pack pop identifier を実行します。 それから,pop が対応する push の検出に失敗しない限り,現在のアラインメントが 'n' に設定されます。そうでない場合,'n' は無視され,警告が発行され,そのアラインメントは先頭の -aX アラインメントに戻されます。
エラー条件
'identifier' を push または pop なしで指定すると,エラーになる。
1,2,4,8,16 以外のアラインメントを指定すると,エラーになる。
警告条件
#pragma pop
を対応する push なしで使用すると,警告が発行される。