Eon*_*nil 54 c compiler-construction clang option
我看到了编译器选项GNU99和C99.它们的区别是什么?任何细节文件?(Clang,Xcode,Mac OS X)
Mat*_*ner 43
clang支持-std选项,它可以更改clang使用的语言模式.C的支持模式是c89,gnu89,c94,c99,gnu99以及这些模式的各种别名.如果未指定-std选项,则clang默认为gnu99模式.
所有c*和gnu*模式之间的差异:
- c*模式定义
__STRICT_ANSI__.- 特定于目标的定义不以下划线为前缀,如"linux",在gnu*模式中定义.
- Trigraphs默认在gnu*模式下关闭; 它们可以通过
-trigraphs选项启用.- 解析器将"asm"和"typeof"识别为gnu*模式中的关键字; 变体
__asm__并__typeof__在所有模式中被识别.- 某些平台上的gnu*模式默认识别Apple"blocks"扩展名; 可以使用该
-fblocks选项在任何模式下启用它.
小智 11
从1999年开始,C99就是C标准的版本,我们都知道.在GCC,它没有得到完全支持.
GNU99是C99的扩展,就像GNU98是C98的扩展一样.来自文档:
ISO C99加上GNU扩展.当ISO C99在GCC中完全实现时,这将成为默认值.名称gnu9x已弃用.
Clang也支持这些扩展.
| 归档时间: |
|
| 查看次数: |
34447 次 |
| 最近记录: |