gnu99!() { /* proc-macro */ }Expand description
Compiles a C99 translation unit with the GNU extensions switched on.
Everything c99! does, plus what GCC’s -std=gnu99 adds over
its -std=c99: the plain spellings typeof and asm are keywords, and a
construct a later revision introduced — _Static_assert, _Generic, a
0b literal — is accepted rather than being told which macro to write.
The extensions spelled with a leading double underscore — __typeof__,
__attribute__, __extension__, __builtin_*, __restrict — are
available in every entry point, exactly as they are in GCC’s strict
modes: the names are reserved, so nothing a program may legally call its
own is taken away. __STRICT_ANSI__ is defined only in the strict entry
points; __GNUC__ is 4 in all of them. A GNU dialect also switches
trigraphs off, as gcc -std=gnu99 does, so "what??!" there is an
exclamation rather than a pipe.
See doc/gnu-extensions.md
in the repository for the whole catalogue.