【问题标题】:Do I need to type -std=c++17 (or whichever standard I want to use) every time I need to compile a C++ program? [closed]每次我需要编译 C++ 程序时,是否需要输入 -std=c++17 (或我想使用的任何标准)? [关闭]
【发布时间】:2019-08-19 13:40:55
【问题描述】:

我有 Windows 10 操作系统,使用 VS Code 编写我的 C++ 代码并使用 CMD 编译我的程序。我真的不知道我的 PC 中的编译器(MinGW,gcc 版本 6.3.0)使用哪个标准,但我只想忍受它使用最新的标准,如 C++14 或 17。不幸的是,我需要输入每次我需要使用该标准编译我的程序时,都在-std=c++17 中。如何将所需的标准设置为默认值?

【问题讨论】:

  • 1) 相关(可能重复):Change default C++ standard in g++。 2) 既然您在 Windows 上,出于任何特殊原因,为什么您不使用 Visual Studio 2017/2019 社区版?
  • 我真的不知道我的 PC 中的编译器(MinGW,gcc 版本 6.3.0)使用哪个标准在这种情况下,这个 Q/A 可能会很有趣: SO: Which C++ standard is the default when compiling with g++?。 ;-)
  • 我只是 tried on coliru,它有一个全新的 gcc 9.2.0。输出#define __cplusplus 201402L。所以,如果你需要 C++17,我看不出没有-std=c++17 的方法。 (旧的 gcc 6.3 甚至可能默认使用 C++11。)
  • 如果您使用make 文件,则不必继续输入版本。您将设置 CPP 或编译器定义变量及其参数。
  • 我认为这是 Stack Overflow 的一个有效问题,因为它涉及与编程直接相关的软件。

标签: c++ cmd compilation


【解决方案1】:

很遗憾,每次需要编译都需要输入-std=c++17

这就是存在构建脚本的原因。有很多参数需要在某个时候传递给编译器:

  • 源文件(您可能有多个翻译单元 = .cpp 文件)
  • 包括目录
  • 要链接的库
  • 优化级别
  • 警告
  • C++ 标准
  • 符号定义
  • ...以及更多编译器标志...

在更大的项目中,您可能还有多个构建目标(因此编译器调用),您也不希望每次都手动完成所有这些。

作为一个简单的解决方案,您可以编写一个.bat 脚本,该脚本使用适合您的参数调用编译器。但是,有一些工具在这方面做得更好,例如 make(通常只在 Linux 世界中找到)或 MSBuild(Visual Studio 的一部分)。然后还有一些工具可以为您生成这些脚本,例如 CMake 和几个带有自己的项目配置文件的 IDE。

【讨论】:

    【解决方案2】:

    我只是想忍受它使用最新的,如 C++14 或 17。不幸的是,我每次都需要输入 -std=c++17

    -std=c++17 正是您确保使用所需的 C++ 版本(在本例中为 C++17)的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多