C++ - 是否值得在 Windows 上使用 GCC 而不是 MSVC?

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

我已经阅读了一些关于 GCC 与 MSVC 以及这些编译器的开发的问题,例如 GCC worth using on Windows to replace MSVC?, Visual Studio or GCC? and GCC vs MS C++ compiler for maintaining API backwards binary compatibility。但这些都是非常过时的问题(2011 年)。随着新的 c++14 特性的出现,两个编译器之间的平衡开始了。是否仍然值得在 Windows 上使用 Code::Blocks 并具有使用 Microsoft Visual Studio 的所有优点,例如:

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

我看到使用 GCC 与 MSVC 相比的最大优势是:

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

详细的问题是公开征求意见;甚至还有一些挑衅"best IDE"等等。即便如此标题中提出的问题,

C++ - Is GCC [i.e. g++] worth using on Windows nowadays?

有一个简单的fact-based答案,即,因为

  • 在可能的情况下,将代码公开给至少两个编译器是个好主意,例如组合 Visual C++ 和 g++,以及

  • g++ 适合学习。

Windows 中 g++ 的主要问题是它的 API 绑定只完全覆盖 Windows XP API,什么都没有之后很少。

是的。

尽管 MSVC 在更新的 C++ 标准方面取得了 一些 进步,但它仍然 可悲地 落后,即使在 C++98 状态下(这很方便地从该状态页面中排除)。

根据我最近的阅读,MSVC 团队甚至没有具体的计划来解决一些旧问题,例如具有名称查找和模板实例化。

现在,当您可以使用带有 clang 的 MSVC 作为编译器时,这可能是停止使用 GCC 的原因。然而,就我的目的而言,我发现 clang 的诊断(有时是劣质代码)很多,所以我仍然使用 GCC 作为我的主要编译器,只使用 clang 作为备份。

正如@Cheersandhth 所说,使用两个编译器很好。虽然也许看看英特尔的编译器。