c++ - 为什么将语言标准从 -std=gnu++98 提升到 -std=gnu++11

标签 c++ c++11 gcc compiler-optimization c++98

我使用 -std=gnu++98 有一个相对维护良好、相当大的代码库。语言标准从gnu++98升级到gnu++11有什么好处?

如果有优势,仅从 -std=gnu++98 更改为 -std=gnu++11 就足够了吗?是否还有其他选项应该与此更改一起使用(考虑 -pendantic -pedantic-errors 如何伴随 C 的 -std=c89 或 -ansi)

最佳答案

(我将尝试提供一个笼统的一般性答案。YMMV 取决于您未提供的具体情况。)

对于现有代码库?不多。为 C++11 及更高版本编写的代码可以利用许多新的语法和语义并提高性能(例如使用 constexpr 函数、移动语义等);在您的情况下,这可能是标准库,或者您正在使用的支持更新的 C++ 语言标准的其他库。但如果性能关键代码是您自己的,我不建议推广标准版本。

话虽如此 - 如果您要使用 C++11(或者更好的是,C++14 或 C++17,它们已经过时)改造您的实际代码库,您将能够在性能方面受益、可读性、可维护性、减少代码大小等。这绝对是可取的,因为随着时间的推移,越来越多的代码将需要 C++11 或更高版本来编译。

关于c++ - 为什么将语言标准从 -std=gnu++98 提升到 -std=gnu++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937039/

相关文章:

c++ - 防止在 Qt 的 winEvent 中显示默认的 Windows 上下文菜单

c++ - 文件c++的写入性能

java - 如何将 native android 代码添加到 LibGDX?

c - 不同 gcc 版本的语法错误?

c++ - 能否以某种方式从私有(private)类(class)中检索 "host instance"?

c++ - 从线程中获取 native 句柄?

c++ - 为什么线程对类变量所做的更改没有影响?

c++ - 生产者、消费者和我可爱的僵局

c++ - GCC:__attribute__ ((format (printf, x, y)) 在使用可变参数宏调用函数时似乎不起作用

linux - gcc中共享库函数的静态链接