c – g版本4.0.0.8和4.3.2之间有什么区别?
g 4.0.0.8和g 4.3.2有什么区别?这两个是我在各种编程竞赛中看到的最常见的C编译器.
我试着谷歌,但没有发现任何东西. 解决方法
考虑到你对两者之间的C变化感兴趣,这真的不是一个“巨大的列表”.
4.0.0.8只是4.0的补丁修订版,其发行说明如下:http://gcc.gnu.org/gcc-4.0/changes.html 4.3.2是4.3的补丁修订版,其发行说明如下:http://gcc.gnu.org/gcc-4.3/changes.html 如果你看看它们之间的差异,我认为以下列表涵盖了你真正关心的GCC 4.0和4.3之间最重要的区别. GCC 4.3.2(包括GCC 4.1和GCC 4.2的变化): Experimental support for the ISO C++0x standard(这是一个链接) > long long现在已经在C中正式支持(尽管它是旧版GCC提供的扩展) 更多TR1库支持 >< regex> (gcc 4.3),< random> (gcc 4.2)和< complex> (gcc 4.2) C能见度处理已经彻底改变. (GCC 4.2)
在GCC 4.2中删除了未记录的模板扩展(在4.1中已弃用)
template <template <typename> class C> void f(C<double>) {} template <typename T,typename U = int> struct S {}; template void f(S<double>);
另外,请查看porting to GCC 4.3 guide,其中一些重要内容如下: 向后兼容/已弃用标头已被删除. 大多数情况下,这意味着已删除了一堆预标准标题,例如< iostream.h> (使用标准< iostream>),< hash_map.h> (使用< tr1 / unordered_map>)< hashtable.h> (根据需要使用< tr1 / unordered_map>或< tr1 / unordered_set>)等.再次,不是什么大不了的事. 更严格的标准执行 例如,main的双参数形式上的签名必须正确. 没有重复的函数参数名称 void func(int x,int x); // now an error 并且有各种错误修复,以及我认为不会真正影响您如何编写竞争代码(如删除/添加新编译器标志)以及删除诸如<?之类的内容的更改.和>?操作符(曾经使用过那些?). 总而言之,如果你不得不为两个编译器编写代码,我不认为这两者之间的差异会让你感到非常悲伤. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |