在Windows上,GCC比MSVC更值得使用吗?
visual C++ - Is it worth using GCC over MSVC on Windows?
我已经阅读了一些关于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,而
- MSVC多行宏编译器错误
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- MSVC是否支持C++11样式的属性而不是__declspec
- MSVC将仅移动结构参数解释为指针
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 有与__builtin__FUNCTION()等效的MSVC吗
- 为什么 gcc 编译这个而 msvc 没有
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- MSVC 忽略 [[maybe_unused]] 的功能?
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- MSVC中的宏观扩展问题
- 在线程之间拆分任务总是值得的吗?
- "Ill-defined for-loop - loop executes infinitely" (MSVC C6295)
- __CHAR_BIT__宏是否为 MSVC 编译器预定义?
- 不正确的操作数类型 MSVC
- 使用 MSVC 调试类型
- GCC值得在Windows上使用以取代MSVC
- 在Windows上,GCC比MSVC更值得使用吗?