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

后端 未结 3 674
庸人自扰
庸人自扰 2020-12-12 16:23

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

3条回答
  •  醉梦人生
    2020-12-12 16:54

    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.

    More links

    • Options controlling C dialect for GCC
    • Extensions to the C Language Family
    • Clang Language Extensions
    • Useful GCC flags for C

提交回复
热议问题