Windows 上用于 C++ 11 兼容性编程的 Clang 或 GCC 编译器?

Clang or GCC compiler for c++ 11 compatibility programming on Windows?

我想知道哪个编译器更适合 Windows OS (8.1) 在与 c++11(和后来的 14)函数、liberies 和特性(如 lambdas)的兼容性方面) 并且使用起来也很舒服(错误更少)。

我是一名大学生,因此我并没有从产品的角度来看待这个主题(尽管我确实喜欢编写代码,而不仅仅是为了我的研究项目)。

如果重要的话,我目前正在使用 eclipse luna IDE。

注意 compiler != IDE.

VC++ 是 Windows 和 depending on its version 上最受欢迎的语言之一,它对 C++11 特性有很好的支持。查看 msdn 博客上的列表,了解是否有您需要的一切。

Gcc 也被移植到 Windows,您可以在 C++11 上安装 MinGW to use it (4.8.1.4 at the moment of writing this). It is pretty complete

Clang 也可用于 Windows 平台,它也是 complete on C++11 support (plus it has good diagnostic messages), but notice that you will have to use another linker since clang doesn't ship with one (although there is an ongoing effort to write it: http://lld.llvm.org/)

我上面引用的所有编译器都非常稳定,但根据我的经验,如果您正在寻找最新和最强大的 C++11/14/17 功能,您可能只想选择 gcc 或 clang (VC++ 添加对最新功能的支持速度较慢,并且编译器正在进行大规模更新以实现现代化)。请记住,这些是 compilers 而不仅仅是 IDEs,IDE 是一个前端支持使用编译器秘密编译文件的程序。

要设置 C++11 编译器,我建议安装 MSYS2,它有一个包管理器 (pacman),可以安装新版本的 GCC、GDB、Clang 和许多库,如 SDL,Lua等。也非常好用。

就 GCC 与 CLang 而言——我确实努力让 CLang 工作(它可能比 GCC 更快、更友好——产生更好的警告等),但失败了。问题是 CLang(随 MSYS2 一起提供)被硬编码为使用 GCC 链接器,这在使用 libstdc++(来自 GCC 的标准实现)时会产生一些奇怪的链接器错误。 libc++(设计用于 CLang 的新实现)在 Windows 上对我也不起作用。 因此,您要么尝试从源代码构建 CLang,并希望某些配置适用于 C++11 库,要么坚持使用开箱即用的 GCC

作为IDE,建议看一下CLion。它非常舒适(比 Visual Studio,IMO 更加用户友好和直观)。只需安装它并将其指向 MSYS2 的 mingw64(或 mingw32)文件夹,它将自动为您检测所有内容。

虽然它只适用于 CMake 项目。