構造体のパッキング(#pragma pack/#pragma unpack) 【V1.05以降】
構造体のパッキングを指定します。
[機能]
-
#pragma pack指定位置以降で宣言された構造体に対し,構造体をパッキングします。構造体メンバのアライメントを1にします。
#pragma unpack指定位置以降で宣言された構造体に対し,構造体をパッキングしません。
オプション-packと#pragma unpackを同時に指定した場合は,#pragma unpackを優先します。
[方法]
構造体の宣言より前で#pragma pack/#pragma unpackを宣言します。
#pragma pack
#pragma unpack
[使用例]
struct s1 {
char a;
int b; // アライメントを1にします
} st1;
struct s2 {
int b; // アライメントを1にしません
} st2;
[制限]
同一の構造体に対し,パッキング指定の異なるCソース・ファイルが混在した場合,動作を保証しません。
#pragma packによって整列条件が2バイトから1バイトになった構造体,共用体,または,それらのメンバのアドレスを,標準ライブラリ関数の実引数として渡した場合,動作を保証しません。
#pragma packによって整列条件が2バイトから1バイトになった構造体,または共用体メンバのアドレスを,整列条件が2バイトである型のポインタに渡して間接参照した場合,動作を保証しません。