C99不是GCC的默认C版本?

时间:2011-02-20 23:16:51

标签: c gcc c99

为什么GCC默认不编译C99?我的意思是为什么有必要添加--std = c99标志 每次编写C99中的代码?

4 个答案:

答案 0 :(得分:10)

修改:从GCC 5开始,-std=gnu11是默认设置。请参阅Porting to GCC 5


请参阅C Dialect Optionsgnu89是默认设置。

  

`gnu89'

     

ISO C90的GNU方言(包括一些   C99功能)。这是默认值   C代码。

如@tsv所述,尚未完全支持ISO C99:

  

`C99'
  `C9X'
  `iso9899:1999'
  `iso9899:199x'

     

ISO C99。请注意,此标准尚未完全支持;有关详细信息,请参阅http://gcc.gnu.org/c99status.html。名称`c9x'和`iso9899:199x'已弃用。

还有:

  

`gnu99'
  `gnu9x'

     

ISO C99的GNU方言。当ISO C99在GCC中完全实现时,这将成为默认值。名称`gnu9x'已弃用。

答案 1 :(得分:10)

也许是因为它仍未完全实施 - 请参阅C99 status

也可以说C99的功能还没有被广泛采用,尽管这是一个循环论证。

答案 2 :(得分:10)

使用命令c99编译C程序。

当前的POSIX标准指定了命令c99,因此它应该在大多数类Unix系统中可用。

答案 3 :(得分:2)

原因是gcc的默认配置需要很长时间才能更改,因为每次更改默认配置时,都可能会破坏有效程序的编译(在这种情况下,有效的c89程序在c99中无效) )。从gcc 5.0开始,gcc使用的默认C标准是gnu11,它是带有gnu扩展名的c11(参见here):

  

C的默认模式现在是-std = gnu11而不是-std = gnu89。