为什么C标准C11在gcc中不是默认的?

时间:2014-08-21 22:14:57

标签: c gcc standards

如果查看standards,您会发现它们确实包括对C11和C99的支持。但是如果你试图在没有指定标准的情况下编译代码,GCC仍然会使用C89 / C90。

这背后的原因是什么?

我的意思是在其他语言中,通常每当发布新标准时,编译器将被设置为遵循新规则。

为什么这种行为与gcc编译器不一样?

2 个答案:

答案 0 :(得分:6)

为C90编写的代码的99.99%将在C99​​编译器下干净地编译,但不是100%。由于GCC确实是Unix安装的支柱,因为隐含的假设是新的编译器不会破坏旧软件,绝对向后兼容性是最高优先级。为新软件明确指定C99比回过头来审核所有旧软件以查看哪些位需要明确保留回C90更容易。

答案 1 :(得分:4)

答案在您链接的页面中:

  

GCC支持三种版本的C标准,虽然对最新版本的支持尚未完成。

对C99的支持已基本完成,但我认为还有一些尚未实施的小事。根据该页面,他们打算在未来的版本中将带有GNU扩展的C11作为默认值。