Skip to main content

gnu99

Macro gnu99 

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