在Windows上,GCC比MSVC更值得使用吗?

visual C++ - Is it worth using GCC over MSVC on Windows?

本文关键字:值得 MSVC Windows GCC      更新时间:2023-10-16

我已经阅读了一些关于GCC与MSVC以及这些编译器的开发的问题,例如GCC值得在Windows上使用以取代MSVC?Visual Studio还是GCC?以及用于维护API向后二进制兼容性的GCC与MS c++编译器。但这些都是非常过时的问题(2011年)。随着c++14新特性的到来,这两种编译器之间的平衡开始出现。在Windows上使用Code::Blocks仍然值得吗?它拥有使用Microsoft Visual Studio的所有优点,例如:

    本地Windows库,支持使用MFC, ATL, DirectX和其他有用的微软库。
  • 出色的调试功能,特别是在使用反汇编视图时(它有很多有用的功能)。

在我读过的大多数主题中,他们总是说GCC代码生成比MSVC的更好,但是在这件事上的差异开始缩小。在GCC中代码生成更好吗?最新的c++特性呢,哪些是领先的?

与MSVC相比,我认为使用GCC的最大优势是:

  • 它是开源的,这使得自定义编译器代码成为可能。
  • 易于编写可移植代码。
  • ? ?更好的代码生成?

GCC中的c++ 14特性:https://gcc.gnu.org/projects/cxx1y.html

MSVC RTM上的c++ 11和c++ 14特性:http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx

可以。

尽管MSVC已经朝着更新的c++标准取得了一些进展,但它仍然可悲地落后,即使在c++ 98状态(方便地从状态页中排除)。

从我最近读到的东西来看,MSVC团队甚至没有一个具体的计划来修复一些老问题,例如名称查找和模板实例化。

现在,当您可以使用MSVC和clang作为编译器时,这可能是停止使用GCC的原因。然而,出于我的目的,我发现clang有更差的诊断(有时是更差的代码),所以我仍然使用GCC作为我的主要编译器,只是使用clang作为备份。

正如@Cheersandhth所说,最好使用两个编译器。不过也许可以看看英特尔的编译器

详细阐述的问题是公开征求意见;甚至还有"最佳IDE"之类的挑衅。即便如此,题目中提出的问题,

c++ - GCC[即g++]值得在Windows上使用吗?

有一个简单的基于事实的答案,即,因为

  • 如果可能的话,将代码暴露给至少两个编译器是一个好主意,例如组合Visual c++和g++,以及

  • g++非常适合学习。

g++在Windows中的主要问题是它的API绑定只完全覆盖了Windows XP API,而

没有之后很少。