在gcc中使用的C版本是什么?

时间:2014-04-16 01:50:52

标签: c gcc

GCC中使用的C版本是什么? C99,C11还是C90?我以为海湾合作委员会使用C99,但我错了:

for(int i = 0; i < 100; i++){
  ...
}

错误:'for'循环初始化声明仅允许在C99模式下使用。

4 个答案:

答案 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控制表达式中定义变量。