首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将现有的C++代码移植到C++11

如何将现有的C++代码移植到C++11
EN

Stack Overflow用户
提问于 2013-06-02 15:34:30
回答 4查看 2.3K关注 0票数 6

我们正在开发一个用C++开发的模块,但考虑到新的C++11,我正在考虑迁移到它。

如何继续?两者是相同的,还是有一些编译器依赖关系?

我的软件目前支持Windows和Linux。我正在使用Microsoft Visual Studio以及GCC来构建它。

总体而言,如果需要更改,需要进行哪些更改?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-02 18:26:29

旧的C++将与您的C++11编译器一起使用

nullptr查看您如何使用迭代器(如果您使用函数指针,则可能会移至range-for)

  • Review (也许您可以使用lamdaes)

  • Review类启动器(或许您可以编写初始化列表)

  • 查看指针的用法(也许您可以切换到nullptr使用指针可能您可以移到nullptr
票数 9
EN

Stack Overflow用户

发布于 2013-06-02 18:58:33

编译器问题很少,而且很容易解决。这比采用一个新的编译器容易得多。如果你有选择,坚持使用你现在使用的std lib,然后在你的程序编译成C++11之后更新std lib。如果动态加载,你可能需要坚持使用旧版本的库。

如果你想利用新特性,可以看看cpp11-migrate。当您准备完全使用c++11时(假设您的编译器支持所有这些特性),此工具可以自动为您采用一些新特性。

票数 2
EN

Stack Overflow用户

发布于 2013-06-02 19:14:12

迁移?我认为WG21努力保持所有的兼容性。除非您使用导出,否则不需要迁移,现有代码就可以了。

我猜你真正想要的是重构现有代码以获取C++11特性的问题。在这里,我将应用关于重构的一般智慧--如果没有适当的目标和基于价值的动机,永远不要做重构。

新引入的闪亮特性并不会给你的代码带来技术上的负担。

我建议你开始在新代码中使用新功能,并在出于不同原因进行重构的地方应用更自由的更改。只有当拥有多种风格被认为是一种真正的痛苦时,才开始总体上重塑思维。( C++的多范式性质通常应该允许相当多的自由,只有偶尔才会强制统一方法。)

从我将重点介绍的新功能:

  • 自动。我的所有新代码都充满了auto constauto const&本地变量,省略了类型。好吧,一个建议的全局替换与我之前说的相矛盾: replace ::iterator usage by auto,如果你有使用for循环的话。
  • lambdas,如果你使用algos

one-shot functions

  • 新的线程东西,特别是std::future,如果适用于项目

如果你碰巧使用了'std::auto_ptr‘,可能也是全局替换的一个很好的候选者。

我遗漏了移动语义,因为我还没有抓住它们,不确定它的影响,所以我把它留给其他人来建议或不建议。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16880760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档