| |||
| Home > Compiler-specific Features > Pragmas > #pragma pack(n) | |||
This pragma aligns members of a structure to the minimum of n and
their natural alignment. Packed objects are read and written using
unaligned accesses.
#pragma pack(n)
Where:
nis the alignment in bytes, valid alignment values
being 1, 2, 4 and 8.
This example demonstrates how pack(2) aligns
integer variable b to a 2-byte boundary.
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 };
The layout of S is as shown in Figure 4.1, while the layout
of SP is as shown in Figure 4.2. In Figure 4.2, x denotes one byte
of padding.
SP is a 6-byte structure. There is no padding
after b.
The __packed qualifier and unaligned data access in the Compiler User Guide
__packed structures versus individually __packed fields in the Compiler User Guide.