2012-04-05 139 views
14

例如哪个gcc版本支持c99?哪个gcc和g ++版本支持c和C++的标准?

是否有任何表或图显示gcc和g ++的标准支持状态?

gcc和g ++如何演变?

谢谢〜

+0

还有最近关于你的问题[这里](http://stackoverflow.com/questions/10026150/what-c​​-的C++部分问题norme-im-currently-using /) – juanchopanza 2012-04-05 13:31:41

回答

16

非常严格地说,GCC只支持C89,C++ 98和C++ 03,所有4.3版肯定都支持。

迄今为止,对C99的支持仍然不完整,但GCC长期以来一直支持非常大且可用的子集。

Experiemental C++ 11支持从4.3开始并一直在改进;它已经在4.6.x中很好用了,并且4.7中增加了很多(尽管4.7.0有点不稳定)。

还有一些C11支持,但C11的许多更改都需要一个适当的新C库,这是不容易替换的。

9

你得到最广泛的支持与最新版本的标准 - 4.7的时刻。所选标准可以使用-std开关进行设置。 Here is an article that describes the available values。一些附加功能/不同行为也可以使用-fpermissive启用。

+0

我可以在您提供的网页中看到许多标准的gcc和g ++支持。哪些gcc和g ++版本支持哪些标准的信息在哪里?谢谢〜 – sam 2012-04-05 13:32:50

+0

我不认为有这样的信息可用,如果有的话你会得到'-std'几乎相同的值。它认为4.3中最新的增加是“C++ 0x”。标准及其在GCC中的实现是两个不同的事情。你称之为“支持”是什么?即使使用最新版本,GCC仍然向C++ 03添加修补程序,并且该标准差不多有10年的历史(迂腐,其中大部分与C++ 98相同,因此甚至更旧)。 – 2012-04-05 13:58:43

+0

谢谢〜我可以理解这个区别。那么使用-fpermissive的情况如何? – sam 2012-04-05 14:03:47

0

的支持的详细信息可以在GNU网站上找到。我记得有几十个gcc不适用于c99的标准。 无论如何,要在gcc中支持c99只需要简单--std = c99参数