【问题标题】:How do I upgrade to C++17?如何升级到 C++17?
【发布时间】:2020-11-10 10:19:26
【问题描述】:

我使用 Atom 作为我的 IDE,我当前的 __cplusplus = 201402 是 C++14,我的编译器是 g++ (GCC) 9.2.0

如何升级到 C++17 或 C++20?

我搜索到的所有内容都涉及使用另一个 IDE (Microsoft Visual Studio)。

【问题讨论】:

  • 并使用 clang-tidy 帮助您将代码升级到 C++17
  • gcc 9.2 支持大部分 C++17,但默认不启用。使用g++ -std=c++17 启用支持。 C++2a 在 gcc 9.2 中有部分支持,可以使用 -std=c++2a 启用。您需要升级到较新版本的 gcc 才能更完整地支持 C++20 - 但是,目前 gcc 中不完全支持 C++2a。
  • 安装具有您需要的功能的编译器。在 Linux 中,通常通过升级您的 Linux 版本。我这么说是因为编译器提供的功能是渐变的,而不是绝对的。 C++14,C++17,C++20 ...它的误导。某个版本的编译器可能有一些特性,但不是全部。见:en.cppreference.com/w/cpp/compiler_support
  • 真正的问题是:作为构建管理器,您使用什么?将编译器选项直接提供给编译器是一种粗略的解决方案。

标签: c++ c++17 atom-editor compiler-flags


【解决方案1】:

您不会“升级”到较新的 C++ 标准。
您可以将编译器升级到支持最新标准的更新版本。

截至今天,大多数编译器默认设置为 C++14。
要更改它,您需要在编译期间传递额外的参数。

例如,要使用 GCC for C++17 编译 hello.cpp,您需要执行

g++ -std=c++17 hello.cpp

您需要检查如何在您的 IDE / 编辑器 / 构建系统中传递编译器标志(或设置标准)。


我对Atom不熟悉,但我找到了this

在设置中,点击,然后搜索gpp-compiler。您应该会看到一个设置按钮 - 单击它并编辑命令行选项以满足您的需要。

【讨论】:

    【解决方案2】:

    自己动手:

    #include <iostream>
    
    int main(void) {
        std::cout << __cplusplus;
    
        return 0;
    }
    

    首先使用以下命令编译:

    $ g++ -o main main.cpp && ./main
    

    以后:

    g++ -o main main.cpp -std=c++17 && ./main
    

    您将了解这些差异。 请注意,如果您无法使用-std=c++20 标志,这显然意味着您的编译器不支持C++20 标准。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 2022-10-13
      • 2022-11-11
      相关资源
      最近更新 更多