如果查看standards,您会发现它们确实包括对C11和C99的支持。但是如果你试图在没有指定标准的情况下编译代码,GCC仍然会使用C89 / C90。
这背后的原因是什么?
我的意思是在其他语言中,通常每当发布新标准时,编译器将被设置为遵循新规则。
为什么这种行为与gcc编译器不一样?
答案 0 :(得分:6)
为C90编写的代码的99.99%将在C99编译器下干净地编译,但不是100%。由于GCC确实是Unix安装的支柱,因为隐含的假设是新的编译器不会破坏旧软件,绝对向后兼容性是最高优先级。为新软件明确指定C99比回过头来审核所有旧软件以查看哪些位需要明确保留回C90更容易。
答案 1 :(得分:4)
答案在您链接的页面中:
GCC支持三种版本的C标准,虽然对最新版本的支持尚未完成。
对C99的支持已基本完成,但我认为还有一些尚未实施的小事。根据该页面,他们打算在未来的版本中将带有GNU扩展的C11作为默认值。