【发布时间】:2015-07-21 02:19:43
【问题描述】:
我已经阅读了一些关于 GCC 与 MSVC 以及这些编译器开发的问题,例如 GCC worth using on Windows to replace MSVC?、Visual Studio or GCC? 和 GCC vs MS C++ compiler for maintaining API backwards binary compatibility。但这些都是非常过时的问题(2011 年)。随着新的 c++14 功能的出现,两个编译器之间开始平衡。在 Windows 上使用 Code::Blocks 是否仍然值得使用 Microsoft Visual Studio 的所有优点,例如:
- 原生 Windows 库,支持使用 MFC、ATL、DirectX 和其他有用的 Microsoft 库。
- 很棒的调试功能,尤其是在使用反汇编视图时(它有很多有用的功能)。
在我阅读的大多数主题中,他们总是说 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
【问题讨论】:
-
MFC 很烂,ATL 是恐龙。在我看来,MS 编译器仍然远远落后,尽管他们已经宣布即将推出的 VS 版本将支持 clang++。
-
我相信这将在任何时候关闭,因为基于意见,虽然我个人希望看到使用这两种工具并比较的人的各种意见
-
MinGW 也支持 DirectX 和其他有用的 Microsoft 库。请对此类基于意见的问题进行足够的研究并自己打电话;一个更客观的问题也许会更好地造福于社区。此外,大多数这些事情都取决于您的想法。你不需要所有的 MFC、ATL、DirectX,只需要一些子集/组合,这表明这只是一个展示实力的问题。
-
IMO,g++ 最大的问题是它依赖于 glibc,而 glibc 开发人员对 Windows 不屑一顾。这就是为什么要花费数年时间来修复
std::to_string之类的问题。您仍然必须使用 hack 才能使用std::thread和相关的。所以库的一致性是一个持续存在的问题。 -
gcc 比 MSVC 有更好的 C 支持。如果使用 C 库,这可能很重要。事实上,直到最近你才能用 MSVC 编译 ffmpeg。现在你可以,但仍有其他项目使用 MSVC 不具备的 C 功能(也不打算很快拥有)。虽然这是关于 C++ 的,但在较大的 C++ 项目中使用 C 项目并不少见,所以我认为值得一提。
标签: c++ visual-c++ gcc