When (accidentally) declaring a packed union i.e. with:
} _Pragma("packed 1") abc;
or equivalent, it gets treated as a struct; the offset of `a' is zero but the offset of 'b' is NOT, its 4 ! This results in various hard to track down errors.
When the _Pragma() is removed, the compilation goes OK.