#pragma pack(n)

このプラグマを使用すると、構造体のメンバの境界が n と自然境界整列の小さい方の値で整列されます。パックされたオブジェクトの読み出しと書き込みは、非境界整列アクセスを使用して行われます。

Show/hide構文

#pragma pack(n)

各項目には以下の意味があります。

n

バイト単位の境界整列です。有効な境界整列値は 124、および 8 です。

Show/hideデフォルト

デフォルトは #pragma pack(8) です。

Show/hide

この例では、pack(2) によって整数変数 b が 2 バイト境界で整列される方法を示します。

typedef struct
{ 
    char a;
    int b;
} S;

#pragma pack(2)

typedef struct
{ 
    char a;
    int b;
} SP;

S var = { 0x11, 0x44444444 };
SP pvar = { 0x11, 0x44444444 };

S のレイアウトはFigure 1SP のレイアウトはFigure 2に示すとおりです。Figure 2 では、x が 1 バイトのパディングを示します。

Figure 1. 非パック構造体 S

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


Figure 2. パック構造体 SP

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


Note

SP は 6 バイト構造体です。b の後にパディングはありません。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711