GCC中使用的C版本是什么? C99,C11还是C90?我以为海湾合作委员会使用C99,但我错了:
for(int i = 0; i < 100; i++){
...
}
错误:'for'循环初始化声明仅允许在C99模式下使用。
答案 0 :(得分:3)
根据2 Language Standards Supported by GCC:
如果没有给出C语言方言选项,则默认为
-std=gnu90
;这是为了在将来的某个版本中更改为-std=gnu11
。
答案 1 :(得分:2)
我认为默认值为-std=gnu90
。您可以在编译器标志中指定-std=c99
以支持此功能。
答案 2 :(得分:2)
默认情况下,gcc
将C90与GNU extension一起使用,gcc
文档Language Standards Supported by GCC中包含此内容,此标志为-std=gnu90
:< / p>
默认情况下,如果没有给出C语言方言选项,则为-std = gnu90;这是为了在将来的某个版本中更改为-std = gnu11。
如果您希望使用C99支持,请使用-std=c99
,但这并不意味着gcc
不会使用扩展程序,因此如果您希望在gcc
使用扩展程序时收到警告您需要添加-pedantic
和-pedantic-errors
才能将其变为错误:
要获得标准所需的所有诊断,您还应指定-pedantic(或-pedantic-errors,如果您希望它们是错误而不是警告)
答案 3 :(得分:0)
使用-std = 99
在C99之前,您必须在块的开头定义局部变量。 C99导入了C ++特性,您可以将局部变量定义与指令混合使用,您可以在for和while控制表达式中定义变量。