Skip to main content

gnu89

Macro gnu89 

Source
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.