2011-10-19 116 views
8

什么是C++11已经足够成熟的功能,我可以开始在我的项目中安全使用。我在说的是GCC,主要是我很少需要Visual Studio。我显然不希望在我的代码中包含一个需要几个月后重写的功能。我是否应该从一开始就开始使用这些功能?因为我们主要做的事情不是c++11 dependent我们可以在老派的方法中做所有事情和每件事情。所以我们甚至应该在这个早期阶段开始使用C++ 11功能?什么是稳定的C++ 11功能可以安全使用

+4

您定位的是哪个GCC版本,此代码在哪里运行,您的目标系统使用了什么......本页详细介绍GCC版本中的功能何时可用:http://gcc.gnu.org/projects/cxx0x。 html – birryree

+0

我在Windows上使用MinGW I'vent检查了该版本。和在Linux上我4.3.2然而我不知道下一次我会在哪里放置工作。 –

+0

是那些可以更改的功能?或者他们是稳定的? –

回答

8

C++ 11标准终于完成并发布了,所以不会有任何更改。实现仍然落后一点,可能会实现C++ 0x的稍旧版本,但在更新时可能不会注意到很多差异。

C++ 11并不完全向后兼容,所以您应该做的第一件事就是从C++ 11兼容性的角度开始开发。 GCC有一个警告标志“-WC++ 0x-compat”来帮助解决这个问题。不兼容性非常小,但这应该会导致任何问题。

一个很大的不兼容性是libstdC++的ABI随着向C++ 11的转移而改变,因此您还必须确保可以处理该问题。

一旦你知道安全移动,就可以开始用C++ 11模式编译。在编写新代码或更改旧代码时,您可以逐渐采用任何C++ 11功能对您有用的东西。您可能还需要考虑检查弃用功能的使用情况,例如旧的异常规格,并将其替换为新的功能。

有很多新东西,所以看看标准,如果你可以得到它或一些文件在线。我发现我想直接使用的大部分真正有趣的东西都在图书馆里。不幸的是,这似乎是当前实施仍然滞后最多的地方。

0

您可能需要访问:

http://gcc.gnu.org/projects/cxx0x.html

这个链接给出了不同版本的GCC中的C++ 0x的支持。

我建议你现在使用C++ 11(只需在GCC命令行中添加-std = C++ 0x)。如果你很幸运,那么代码中没有什么会改变。即使您不使用任何C++ 11功能,您仍然可以从右值引用的性能改进和移动语义中受益。

相关问题