10.95 #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.

Note

This pragma is a GNU compiler extension that the ARM compiler
supports.

Syntax

#pragma pack(n)

Where:

n

is the alignment in bytes, valid alignment values
being 1, 2, 4 and 8.

Default

The default is #pragma pack(8).

Errors

Taking the address of a field in a #pragma packed struct does
not yield a __packed pointer, so the compiler
does not produce an error if you assign this address to a non-__packed pointer. However,
the field might not be properly aligned for its type, and dereferencing
such an unaligned pointer results in undefined behavior.

Examples

This example demonstrates how pack(2) aligns
integer variable b to a 2-byte boundary.