使用 C++03,过去(现在仍然)可以使用 MSVC 和 GCC 编写跨平台代码,在 Windows、Linux 和 Mac OS X 之间共享 C++ 代码库。
现在,C++11 的情况如何?看来不同的C++编译器实现了C++11的不同功能。要构建跨平台的 C++11 代码,将 MSVC10 (VS2010) 作为一种“最小公分母”是否安全?即,如果我们将批准的 C++11 功能限制为 MSVC10 实现的功能,生成的 C++11 代码是否可以与 GCC 编译(因此可以在 Linux 和 Mac OS X 上使用)?
或者如果我们需要跨平台代码,等待 C++11 编译器成熟并坚持使用 C++03 是否更好?
谢谢。
最佳答案
您可以使用 GCC 编译 Windows 代码。您不需要使用 Microsoft 的编译器。
如果您现在想轻松地使用 C++11 功能,那么这将是您的最佳解决方案。 Microsoft 尚未实现大量 C++11,而且并非所有内容都计划在 VS11 中。
否则,是的,您显然可以只使用代表最低公分母的编译器实现支持的 C++11 功能的子集。您需要检查并确保这是 Microsoft 的所有新功能的编译器,而不是仅仅假设它是这样的。
我不相信 GCC 已经解决了所有问题,并且不能保证他们对所有功能的实现都是完美的并且与 Microsoft 的 100% 匹配。编写完全可移植的代码一直以来都是很困难的。
仅使用 C++03 功能显然是安全的方法,但它不允许您使用 C++11 功能(显然)。重要与否重要的是只有您才能做出的决定。
关于c++ - 开发跨平台 C++11 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8862161/