设置:我使用GNU编程阵容(gcc,g ++,make和gdb)安装了Cygwin,并成功编译了我正在处理的运行程序。然后我决定在Cygwin中安装boost,因为我需要在我的程序开发时使用典型的boost函数。所以,使用Cywing setup.exe,我安装了boost。在此之后,我刚刚成功编译并运行的程序不再有效。 (并且回想起它并不依赖于提升。)
我发现当安装boost时,它还安装了一个新的编译器,g ++ - 4.exe,而之前我一直在使用r ++ - 3.exe。 Boost还象征性地将g ++。exe链接到新编译器。在我更改了符号链接后,我的旧程序编译正确。
我有什么理由要使用g ++ - 4而不是g ++ - 3吗?
答案 0 :(得分:1)
g ++ 3已经很老了,gcc社区早就放弃了它的维护。 (GCC 4.3目前是oldest maintained release series。)新版本中有很多语言一致性改进(包括接受有效代码和拒绝错误代码),所以如果咬你的话,你将会更容易现在是子弹。您可以查看每个系列的发行说明(例如for 4.0),以了解这些改进的解释以及它们可能需要的代码更改。就个人而言,当我能够根据精确的语言规范推理程序时,我发现编程更加愉快,并且很少被迫理解特定编译器的怪癖。
此外,Boost对g ++ 3的支持似乎即将结束,因为Boost 1.44将GCC 3(.4.6)视为仅在单一平台(RHEL)上的“附加测试编译器”。 Boost开发是线性的(不是分支的),因此您可以发现自己需要升级以修复错误,但后来发现您的平台不再受支持。