我目前使用Visual Studio2010在Windows上的C++中进行开发。在C++11正式发布之后,我已经开始使用它的一些已经在MSVC中可用的特性。但是,正如预期的那样,绝大多数新的更改都不受支持。
我想也许即将到来的Visual Studio版本会添加这些新功能。然而,在阅读了this之后,看起来几乎没有什么变化。
因此,我很好奇在Windows上使用GCC而不是MSVC的可行性,因为它似乎已经支持了绝大多数C++11。据我所知,这意味着要使用MinGW (我还没有见过其他Windows版本的“GCC”)。但我对这是否值得一试有疑问:
发布于 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异常,这与“正常”风格完全不兼容,并且在可执行文件中占用更多空间,但积极的一面是在运行时“几乎为零成本”。
发布于 2014-09-14 20:52:10
我想添加一些信息,因为该字段可能在提出问题后发生了更改。
从MSVC切换的主要问题是缺乏一个与MinGW完美集成的好集成开发环境。Visual Studio是一个非常强大的工具,在相当长的一段时间内,它是Windows上唯一的播放器。然而,Jetbrains在几天前发布了他们新的C++集成开发环境CLion的预览版。
在跨平台应用程序上工作时,主要的好处就来了。在这种情况下,基于GCC的工具链可以让生活变得更容易。此外,CLion与CMake的紧密集成,与Visual Studio相比,这也是一个很大的优势。因此,在我看来,现在考虑切换到MinGW是值得的。
发布于 2011-11-07 03:22:12
GCC对C++11的支持非常出色(既然已经实现了<regex>
,它对标准一致性的支持也就相当不错了)。
如果您更换了您的编译器,您将需要确保每个依赖项都可以使用新的编译器来构建。它们不是可替代的插件(尽管是Clang is working on becoming that way)。
GCC是一名优秀的编译器,他可以生成性能与MSVC相当的代码,甚至更好。不过,它缺少一些低级Windows特有的功能。
除此之外,我要回答你的问题:
https://stackoverflow.com/questions/8029092
复制相似问题