我看过编译器选项GNU99和C99。它们有什么不同?有详细的文档吗?(Clang、Xcode、Mac OS X)
发布于 2011-03-17 04:47:51
Differences between various standard modes
clang支持-std选项,该选项可更改clang使用的语言模式。C语言支持的模式有c89、gnu89、c94、c99、gnu99以及这些模式的各种别名。如果未指定clang选项,则-std默认为gnu99模式。
所有c*和gnu*模式之间的差异:
typeof c*模式定义__STRICT_ANSI__.
-trigraphs选项启用。
__asm__“作为gnu*模式中的关键字;变体__asm__和__typeof__在所有模式中都被识别。
-fblocks选项启用它。更多链接
发布于 2011-03-15 22:56:52
C99是直接的C99,GNU99是带有gnu扩展的C99。请参阅GCC manpage。
发布于 2011-03-15 22:57:36
正如我们所知道的那样,C99仅仅是1999年的C标准版本。在GCC中,它不是完全支持的。
GNU99是C99的扩展,就像GNU98是C98的扩展一样。从文档中:
GNU加上C99扩展。当ISO C99在GCC中全面实施时,这将成为默认值。名称gnu9x已弃用。
Clang也支持这些扩展。
https://stackoverflow.com/questions/5313536
复制相似问题