我目前在 Windows 上使用 Visual Studio 2010 使用 C++ 进行开发。在 C++11 正式发布后,我开始使用 MSVC 中已经提供的一些功能。但是,正如预期的那样,绝大多数新更改都不受支持。
我想也许即将推出的 Visual Studio 版本会添加这些新功能。然而读完之后this http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx看起来几乎不会改变。
因此,我很好奇在 Windows 上使用 GCC 而不是 MSVC 的可行性,因为它似乎已经支持绝大多数 C++11。据我所知,这意味着使用 MinGW(我还没有见过任何其他本机 Windows 版本的 GCC)。但我对这是否值得尝试有疑问:
- 它是否可以用作 cl.exe 的直接替代品,或者是否会涉及大量黑客行为和兼容性问题以使 Visual Studio 使用不同的编译器?
- 在我看来,Visual Studio 的主要卖点是它的调试器。如果您使用不同的编译器,它仍然可用吗?
- 由于 GCC 来自 *nix 世界,并且不是 Windows 原生的,因此与使用本机 MSVC 编译器相比,创建本机 Windows 应用程序是否存在代码质量问题? (如果重要的话:我的大多数项目都是游戏。)
- 换句话说,我编译的 exe 的质量会因为使用非 Windows 原生编译器而受到影响吗?
MSVC 具有 Windows 下无与伦比的 IDE 的巨大优势,包括调试器支持。
MinGW 的最佳替代方案可能是 Code::Blocks,但两者之间存在着一些差距,特别是在代码完成和调试器方面。
此外,MSVC 还允许您使用 MinGW 不支持的一些专有的 Microsoft 内容(MFC、ATL 和可能的其他内容),并且使使用 GDI+ 和 DirectX 变得更容易、更直接(尽管可以使用 MinGW 来完成这两种操作)。
正如另一篇文章中提到的,Cygwin 将具有额外的依赖项和可能的许可证问题(依赖项是 GPL,因此您的程序也必须如此)。 MinGW 没有任何此类依赖性或问题。
MinGW 也编译显著地比 MSVC 慢(尽管预编译头有一点帮助)。
尽管如此,GCC/MinGW 是一个完全可靠的质量编译器,在我看来,它在生成代码的质量方面优于任何迄今为止可用的 MSVC 版本。
对于最新版本的 MSVC,这一点不太明显,但仍然可见。特别是对于与 SSE、内在函数和内联汇编相关的任何内容,GCC 从那时起就彻底消灭了 MSVC(尽管他们正在慢慢追赶)。
GCC 的标准合规性也好得多,这可能是一把双刃剑(因为这可能意味着您的某些代码无法在更符合标准的编译器上编译!),C++11 支持也是如此。
MinGW 还可以选择支持 DW2 异常,这些异常与“正常”风格完全不兼容,并且在可执行文件中占用更多空间,但积极的一面是运行时“几乎零成本”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)