Structures are aligned according to the setting of the align
compiler option, which specifies the alignment rules the compiler is to use
when laying out the storage of structures and unions. Each of the
suboptions affects the alignment in a different way. The mapping of a
structure is based on the setting in effect at the end of the structure
definition. Structure members are aligned by type.
A #pragma options align directive can be embedded within a structure or union definition. The alignment will apply only to definitions of nested structures or unions, and to any structures or unions that appear after the closing brace of the outer structure or union. The alignment of the outer structure or union will be that which was in effect at the opening brace of its definition.
Structures and unions with different alignments can be nested. Each structure is laid out using the alignment applicable to it. The start position of the nested structure is determined by the alignment of the structure in which it is nested.
Structures and unions with identical members but using different alignments are not type-compatible and cannot be assigned to each other.
Related References