C99不是GCC的默认C-版本吗?

11
为什么GCC默认不编译C99?我的意思是,为什么每次编写C99代码时都需要添加--std=c99标志?
4个回答

10
编辑:从GCC 5开始,-std=gnu11是默认设置。请参见转换到GCC 5

请参阅C语言方言选项gnu89是默认设置。

`gnu89'

GNU C90标准的方言(包括一些C99特性)。这是C代码的默认设置。

正如@tsv所提到的,ISO C99尚未得到完全支持:

`c99'
`c9x'
`iso9899:1999'
`iso9899:199x'

ISO C99。请注意,此标准尚未得到完全支持;有关更多信息,请参见http://gcc.gnu.org/c99status.html。名称“c9x”和“iso9899:199x”已弃用。

还有:

`gnu99'
`gnu9x'

GNU ISO C99标准的方言。当GCC完全实现ISO C99时,它将成为默认设置。名称“gnu9x”已弃用。


gcc5 将以 gnu11 作为默认版本。 - Étienne

10

可能是因为它还没有完全实现-请参见C99状态

也可以认为C99特性尚未得到广泛采用,虽然这有点循环论证。


10

使用命令c99编译C程序。

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


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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接