What's the difference between GNU99 and C99 (Clang)?

CCompiler ConstructionOptionClang

C Problem Overview


I have saw the compiler option GNU99 and C99. What's the difference of them? Any detail documentation? (Clang, Xcode, Mac OS X)

C Solutions


Solution 1 - C

Differences between various standard modes

>clang supports the -std option, which changes what language mode clang uses. The supported modes for C are c89, gnu89, c94, c99, gnu99 and various aliases for those modes. If no -std option is specified, clang defaults to gnu99 mode. > >Differences between all c* and gnu* modes: > >* c* modes define __STRICT_ANSI__. >* Target-specific defines not prefixed by underscores, like "linux", are defined in gnu* modes. >* Trigraphs default to being off in gnu* modes; they can be enabled by the -trigraphs option. >* The parser recognizes "asm" and "typeof" as keywords in gnu* modes; the variants __asm__ and __typeof__ are recognized in all modes. >* The Apple "blocks" extension is recognized by default in gnu* modes on some platforms; it can be enabled in any mode with the -fblocks option.

Solution 2 - C

C99 is straight C99, GNU99 is C99 with gnu extensions. See the GCC manpage.

Solution 3 - C

C99 is simply the version of the C standard as of 1999 as we all know it. In GCC it is not fully supported.

GNU99 is an extension to C99, just like GNU98 is an extension of C98. From the docs:

> ISO C99 plus GNU extensions. When ISO C99 is fully implemented in GCC, this will become the default. The name gnu9x is deprecated.

Clang supports these extensions also.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioneonilView Question on Stackoverflow
Solution 1 - CMatt JoinerView Answer on Stackoverflow
Solution 2 - CPaul RView Answer on Stackoverflow
Solution 3 - Cuser142019View Answer on Stackoverflow