gnu89!() { /* proc-macro */ }Expand description
Compiles a C89 translation unit with the GNU extensions switched on.
What gcc -std=gnu89 is: everything a later revision added is accepted
— // comments, mixed declarations and code, long long, designated
initializers and the rest, which C89 as an ISO document does not have and
GCC has always taken as extensions — and the three C89 rules that are not
a matter of extension at all, because a later revision deleted them:
implicit int, implicit function declarations, and old-style (K&R)
definitions (which every entry point below c23! has).
So gnu89! is gnu99! plus those three, with
__STDC_VERSION__ left undefined; it is the entry point for the C of the
1990s, and the one the GCC torture suite is measured with.