ISO Standard: |
“A member of a union object is accessed using a member of a different type (C90 6.3.2.3).” |
Implementation: |
The corresponding bytes of the union object are interpreted as an object of the type of the member being accessed without regard for alignment or other possible invalid conditions. |
ISO Standard: |
“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).” |
Implementation: |
By default on PIC32C, a plain
int bit field is treated as an unsigned integer. Note that
this is different from the PIC32M. The default behavior can be set explicitly
by the compiler flags -funsigned-bitfields and
-fsigned-bitfields . |
ISO Standard: |
“Allowable bit field types other than
_Bool , signed int , and unsigned
int (C99 6.7.2.1).” |
Implementation: |
No other types are supported. |
ISO Standard: |
“Whether a bit field can straddle a storage unit boundary (C90 6.5.2.1, C99 6.7.2.1).” |
Implementation: |
No. |
ISO Standard: |
“The order of allocation of bit fields within a unit (C90 6.5.2.1, C99 6.7.2.1).” |
Implementation: |
Bit fields are allocated left to right. |
ISO Standard: |
“The alignment of non-bit field members of structures (C90 6.5.2.1, C99 6.7.2.1).” |
Implementation: |
Each member is located to the lowest available offset allowable according to the alignment restrictions of the member type. |
ISO Standard: |
“The integer type compatible with each enumerated type (C90 6.5.2.2, C99 6.7.2.2).” |
Implementation: |
If the enumeration values are all
non-negative, the type is unsigned int , else it is
int . The -fshort-enums command line option
can change this. |