Next: Weak Pragmas, Previous: Symbol-Renaming Pragmas, Up: Pragmas [Contents][Index]
For compatibility with Microsoft Windows compilers, GCC supports a
set of #pragma directives that change the maximum alignment of
members of structures (other than zero-width bit-fields), unions, and
classes subsequently defined. The n value below always is required
to be a small power of two and specifies the new alignment in bytes.
#pragma pack(n) simply sets the new alignment.
#pragma pack() sets the alignment to the one that was in
effect when compilation started (see also command-line option
-fpack-struct[=n] see Code Gen Options).
#pragma pack(push[,n]) pushes the current alignment
setting on an internal stack and then optionally sets the new alignment.
#pragma pack(pop) restores the alignment setting to the one
saved at the top of the internal stack (and removes that stack entry).
Note that #pragma pack([n]) does not influence this internal
stack; thus it is possible to have #pragma pack(push) followed by
multiple #pragma pack(n) instances and finalized by a single
#pragma pack(pop).
Some targets, e.g. x86 and PowerPC, support the #pragma ms_struct
directive which lays out structures and unions subsequently defined as the
documented __attribute__ ((ms_struct)).
#pragma ms_struct on turns on the Microsoft layout.
#pragma ms_struct off turns off the Microsoft layout.
#pragma ms_struct reset goes back to the default layout.
Most targets also support the #pragma scalar_storage_order directive
which lays out structures and unions subsequently defined as the documented
__attribute__ ((scalar_storage_order)).
#pragma scalar_storage_order big-endian sets the storage order
of the scalar fields to big-endian.
#pragma scalar_storage_order little-endian sets the storage order
of the scalar fields to little-endian.
#pragma scalar_storage_order default goes back to the endianness
that was in effect when compilation started (see also command-line option
-fsso-struct=endianness see C Dialect Options).
Next: Weak Pragmas, Previous: Symbol-Renaming Pragmas, Up: Pragmas [Contents][Index]