[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.58.8 Structure-Packing Pragmas
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 section Options for Code Generation Conventions). -
#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. i386 and PowerPC, support the ms_struct
#pragma
which lays out a structure as the documented
__attribute__ ((ms_struct))
.
-
#pragma ms_struct on
turns on the layout for structures declared. -
#pragma ms_struct off
turns off the layout for structures declared. -
#pragma ms_struct reset
goes back to the default layout.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on October 19, 2013 using texi2html 5.0.