6.10 Structures, Unions, Enumerations, and Bit-Fields

ISO Standard Implementation
“Whether a “plain” int bit-field is treated as a signed int bit-field or as an unsigned int bit-field (C90 6.5.2, C90 6.5.2.1, C99 6.7.2, C99 6.7.2.1).”
A plain int bit-field is treated as an unsigned integer. The -fsigned-bitfields option can be used to treat bit-fields as signed.
“Allowable bit-field types other than _Bool, signed int, and unsigned int (C99 6.7.2.1).”
All integer types are allowed.
“Whether a bit-field can straddle a storage unit boundary (C90 6.5.2.1, C99 6.7.2.1).”
A bit-field can straddle a storage unit.
“The order of allocation of bit-fields within a unit (C90 6.5.2.1, C99 6.7.2.1).”
The first bit-field defined in a structure is allocated the LSb position in the storage unit. Subsequent bit-fields are allocated higher-order bits.
“The alignment of non-bit-field members of structures (C90 6.5.2.1, C99 6.7.2.1).”
No alignment is performed.
“The integer type compatible with each enumerated type (C90 6.5.2.2, C99 6.7.2.2).”
A signed int or unsigned int can be chosen to represent an enumerated type.