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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我目前使用Visual Studio 2010在Windows上使用C++进行开发。在官方发布C++ 11之后,我开始使用MSVC中已有的一些功能。但是,正如所料,绝大多数新的变化都不被支持。

我想也许即将到来的Visual Studio版本会添加这些新功能。

所以,我很好奇在Windows上使用GCC而不是MSVC的可行性,因为它似乎已经支持绝大多数C ++ 11。据我所知,这意味着使用MinGW(我还没有看到任何其他本地Windows版本的GCC)。但是我有疑问这是否值得尝试:

  • 它可以用作cl.exe的直接替换,还是会涉及很多hack和兼容性问题,以使Visual Studio使用不同的编译器?
  • 在我看来,Visual Studio的主要卖点是调试器。如果使用不同的编译器,这仍然可用吗?
  • 换句话说,我编译的exe的质量会受到使用非Windows本地编译器的影响吗?
提问于
用户回答回答于

MSVC具有与在Windows下不具有相等性的IDE一起使用的巨大优势,包括调试器支持。

对于MinGW来说,最好的替代方案是Code :: Blocks,但其间还存在一些世界,尤其是代码完成和调试器。

此外,MSVC允许使用MinGW不支持的一些专有微软产品(MFC,ATL以及其他),并使得使用GDI +和DirectX更简单,更直接(尽管MinGW可以同时使用这两种产品)。

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

MinGW的还会编译显著比MSVC慢(尽管预编译的头有点帮助)。

尽管如此,GCC / MinGW是一个完全可靠的编译器,在我看来,它在生成代码的质量方面优于任何迄今为止可用的MSVC版本。 这与最新版本的MSVC不太明显,但仍然可见。特别是对于与SSE,内部函数和内联汇编相关的任何事情来说,自从GCC(尽管它们正在慢慢赶上)之后,GCC已经完全无法使用MSVC。

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

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

用户回答回答于

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

摆脱MSVC的主要问题是缺乏一个完美的IDE与MinGW完美整合。Visual Studio是一个非常强大的工具,并且在Windows上是唯一一个相当长的时间。

在处理跨平台应用程序时主要受益。在这种情况下,基于GCC的工具链可以让生活变得更容易。此外,CLion与CMake进行了狭义整合,与Visual Studio相比,它也是一大优势。因此,在我看来,现在考虑切换到MinGW是值得的。

扫码关注云+社区