/GCC 7

4.9 Structures, Unions, Enumerations, and Bit-Fields

  • A member of a union object is accessed using a member of a different type (C90

    The relevant bytes of the representation of the object are treated as an object of the type used for the access. See Type-punning. This may be a trap representation.

  • 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, C99 and C11 6.7.2, C99 and C11

    By default it is treated as signed int but this may be changed by the -funsigned-bitfields option.

  • Allowable bit-field types other than _Bool, signed int, and unsigned int (C99 and C11

    Other integer types, such as long int, and enumerated types are permitted even in strictly conforming mode.

  • Whether atomic types are permitted for bit-fields (C11

    Atomic types are not permitted for bit-fields.

  • Whether a bit-field can straddle a storage-unit boundary (C90, C99 and C11

    Determined by ABI.

  • The order of allocation of bit-fields within a unit (C90, C99 and C11

    Determined by ABI.

  • The alignment of non-bit-field members of structures (C90, C99 and C11

    Determined by ABI.

  • The integer type compatible with each enumerated type (C90, C99 and C11

    Normally, the type is unsigned int if there are no negative values in the enumeration, otherwise int. If -fshort-enums is specified, then if there are negative values it is the first of signed char, short and int that can represent all the values, otherwise it is the first of unsigned char, unsigned short and unsigned int that can represent all the values.

    On some targets, -fshort-enums is the default; this is determined by the ABI.

Next: , Previous: , Up: C Implementation [Contents][Index]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.