我想知道使用最新的GCC版本是否安全,或者人们通常会返回几个版本(如果有的话)。是否有可信任的版本可以假设(相对)没有bug,或者我可以安全地假设(对于非救生计划)最新的GCC版本是否可以安全使用?
编辑:
安全 - 我的意思是主要是无bug,即执行方面。
答案 0 :(得分:3)
在没有相反的特定要求的情况下,我倾向于使用我的(合理的最新)Linux发行版提供的gcc
版本。到目前为止,这项政策对我来说非常有效。
答案 1 :(得分:3)
我倾向于使用最新版本,因为它实现了最新功能,修复了错误,但不幸的是引入了新的错误。介绍bug通常出现在一些奇怪的角落案例中,所以我认为总是使用最新版本是安全的。
答案 2 :(得分:2)
更好的C ++ 11支持是最新的gcc版本。您可以自己编译,但请注意,gcc 4.7几乎已准备好发布,因此,您可能想尝试一下。我经常这样做,几乎所有gcc版本都从4开始,以提高C ++标准的合规性,并且通常会增加编译时间和优化器的改进。
一般来说,最好使用最新的g ++编译器。
然而,在某些情况下,我使用的库存在问题。例如,g ++ 4.5版打破了我正在使用的boost :: xpressive版本。或者更好地说,它揭示了图书馆中的某些东西。此外,使用g ++越高,尝试使用其他编译器编译代码的问题就越多,就会落后于新功能实现。
我的看法是肯定的,使用最新的编译器版本,并使用新标准所具有的优点,因为它们使我的工作效率更高,程序员更快乐。然后,如果我必须将我的代码移植到另一个编译器,我只需调整我需要的代码部分,最后不需要那么多时间。
答案 3 :(得分:1)
在普通主机系统上,我会使用OS /发行版提供的内容,并可能并行安装几个版本。在我的macosx系统上安装了gcc-4.2(OSX标准),gcc-4.6.2,gcc-llvm(OSX标准)和gcc-HEAD。这样我就可以很容易地尝试一些东西,更新gcc-HEAD以获得最大优势,但继续为我的日常开发提供工作和支持的版本。
在商业/工作环境中,我建议非常肛门写下所使用的版本号,并实际备份整个编译器工具链,以便稍后在维护需要时可以回到工作相同的系统。没有什么比让编译器以烦人的方式稍微改变(缺少定义等等)更令人讨厌。
这对于嵌入式开发来说更为重要,到目前为止,我实际上将编译器工具链保存到git中。 gcc中版本的轻微颠簸可能意味着一个令人讨厌的编译器错误(那些在我有这种印象的嵌入式平台上经常发生),或者是大小如此突破40个字节,这可能会完全抹杀你的项目。