The compiler accepts "classic" C as described in K&R (1978), with a few
extensions. Most of these were common extensions that made it into C89.
* 'unsigned' is extended to all integer types.
K&R only mentions 'unsigned int'. NCC extends this qualifier to all
integral types, including 'char', which is signed by default.
* Separate member namespaces.
'struct' and 'union' types each enclose a unique namespace, so members of
different aggregate types need not have different names.
* Separate tag namespaces.
'struct foo' and 'union foo' refer to different types, even in the same scope.
* Arbitrarily-typed bitfields.
The compiler allows bit fields to have any integral type: the size of the type
limits the number of bits that are permitted and sets the alignment requirement
of the word that contains field. Also, the signedness of the field is honored.
Charles Youse <firstname.lastname@example.org>
January 3, 2019