C99不是GCC的默认C版本?
为什么GCC默认不编译C99? 我的意思是为什么每次编写C99代码时都需要添加–std = c99标志?
编辑:从GCC 5开始, -std=gnu11
是默认值。 请参阅移植到GCC 5 。
请参阅C方言选项 , gnu89
是默认选项 。
`gnu89′
GNU方言的ISO C90(包括一些C99function)。 这是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’已弃用。
也许是因为它还没有完全实现 – 请参阅C99状态 。
也可以说C99的function还没有被广泛采用,尽管这是一个循环论证。
使用命令c99
编译C程序。
当前的POSIX标准指定了命令c99
,因此它应该在大多数类Unix系统中可用。
原因是gcc的默认配置需要很长时间才能更改,因为每次更改默认配置时,都可能会破坏有效程序的编译(在这种情况下,有效的c89程序在c99中无效)。 从gcc 5.0开始,gcc使用的默认C标准是gnu11,它是带有gnu扩展名的c11(见这里 ):
C的默认模式现在是-std = gnu11而不是-std = gnu89。