首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GCC在Windows上值得用来取代MSVC吗?

GCC在Windows上值得用来取代MSVC吗?
EN

Stack Overflow用户
提问于 2011-11-07 01:57:14
回答 8查看 69K关注 0票数 68

我目前使用Visual Studio2010在Windows上的C++中进行开发。在C++11正式发布之后,我已经开始使用它的一些已经在MSVC中可用的特性。但是,正如预期的那样,绝大多数新的更改都不受支持。

我想也许即将到来的Visual Studio版本会添加这些新功能。然而,在阅读了this之后,看起来几乎没有什么变化。

因此,我很好奇在Windows上使用GCC而不是MSVC的可行性,因为它似乎已经支持了绝大多数C++11。据我所知,这意味着要使用MinGW (我还没有见过其他Windows版本的“GCC”)。但我对这是否值得一试有疑问:

  • 可以作为cl.exe的临时替代品吗?或者它会涉及到许多hack和兼容性问题来让Visual Studio使用不同的编译器吗?
  • 在我看来,Visual Studio的主要卖点是它的调试器。如果你使用的是来自*nix世界的不同的compiler?
  • Since,并且不是Windows原生的,那么与使用原生MSVC编译器相比,创建原生Windows应用程序是否存在代码质量问题?(如果重要的话:我的大多数项目都是游戏。)换句话说,我编译后的可执行文件的质量会因为使用非Windows本机编译器而受到影响吗?
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-11-07 19:09:12

MSVC有一个巨大的优势,它提供了一个在Windows下无与伦比的IDE,包括对调试器的支持。

MinGW的最佳替代方案可能是Code::Blocks,但两者之间有很多东西,特别是在代码完成和调试器方面。

此外,MSVC允许您使用MinGW不支持的一些专有的微软内容(MFC、ATL,可能还有其他东西),并使GDI+和DirectX的使用变得更容易、更直接(尽管使用MinGW也可以做到这两点)。

Cygwin,正如在另一篇文章中提到的,将有额外的依赖和可能的许可证问题(依赖是GPL,所以你的程序也必须如此)。MinGW没有任何这样的依赖或问题。

MinGW的编译速度也比MSVC慢得多(尽管预编译头文件有一点帮助)。

尽管如此,GCC/MinGW是一个完全可靠的高质量编译器,在我看来,它在生成代码的质量方面优于任何可用的MSVC版本。

在最新版本的MSVC中,这一点不太明显,但仍然可见。特别是对于任何与SSE、内部函数和内联汇编相关的东西,从那以后,GCC一直在彻底摧毁MSVC (尽管他们正在慢慢赶上)。

在GCC中,标准遵从性也要好得多,这可能是一把双刃剑(因为它可能意味着您的一些代码不能在更符合标准的编译器上编译!),C++11支持也是如此。

MinGW还可以选择支持DW2异常,这与“正常”风格完全不兼容,并且在可执行文件中占用更多空间,但积极的一面是在运行时“几乎为零成本”。

票数 60
EN

Stack Overflow用户

发布于 2014-09-14 20:52:10

我想添加一些信息,因为该字段可能在提出问题后发生了更改。

从MSVC切换的主要问题是缺乏一个与MinGW完美集成的好集成开发环境。Visual Studio是一个非常强大的工具,在相当长的一段时间内,它是Windows上唯一的播放器。然而,Jetbrains在几天前发布了他们新的C++集成开发环境CLion的预览版。

在跨平台应用程序上工作时,主要的好处就来了。在这种情况下,基于GCC的工具链可以让生活变得更容易。此外,CLion与CMake的紧密集成,与Visual Studio相比,这也是一个很大的优势。因此,在我看来,现在考虑切换到MinGW是值得的。

票数 16
EN

Stack Overflow用户

发布于 2011-11-07 03:22:12

GCC对C++11的支持非常出色(既然已经实现了<regex>,它对标准一致性的支持也就相当不错了)。

如果您更换了您的编译器,您将需要确保每个依赖项都可以使用新的编译器来构建。它们不是可替代的插件(尽管是Clang is working on becoming that way)。

GCC是一名优秀的编译器,他可以生成性能与MSVC相当的代码,甚至更好。不过,它缺少一些低级Windows特有的功能。

除此之外,我要回答你的问题:

  1. 要让VS使用GCC作为编译器,你几乎需要一直转向makefile或自定义构建步骤。你最好从命令行编译,使用CMake或者类似的东西。
  2. 你不能使用VS调试器来调试GCC的代码。GCC输出GDB兼容的调试信息,并且VS调试格式是专有的,所以在这方面不会很快发生任何变化。
  3. 代码质量正如你所希望的那样好。看上面。
  4. 不,你的代码质量实际上会提高,因为GCC会指出几个假设的标准扩展MSVC会对你隐藏。所有有自尊的开源项目都可以用GCC编译。
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8029092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档