我想知道我的编译器使用的默认 C++ 版本
g++ main.cpp
.
我知道我可以为版本运行 g++ -v 并返回:
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.1.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
但我不确定默认值是多少。
我也知道我可以使用
-std=c++(version)
来更改它但是,将默认设置为 c++20 会很好但是保持最新并且不必使用标志。
请注意,在带有 Xcode 开发人员工具的 MacOS 上,g++ 和 clang 编译器工具集只是 Apple Clang 的别名,它是 Apple 的 Clang 版本。
参见它的文档,在撰写本文时指出:
C++17 功能从 GCC 5 开始可用。此模式是 GCC 11 中的默认模式;可以使用 -std=c++17 命令行标志或 -std=gnu++17 显式选择它以启用 GNU 扩展。
GCC 完全支持 2014 C++ 标准。这种模式是 GCC 6.1 中的默认模式,直到 GCC 10(包括);可以使用 -std=c++14 命令行标志或 -std=gnu++14 显式选择它以启用 GNU 扩展。
GCC 完全支持由 2003 年技术勘误和一些后来的缺陷报告修改的 1998 年 C++ 标准,不包括后来从语言中删除的导出功能。这种模式是 6.1 之前的 GCC 版本的默认模式;可以使用 -std=c++98 命令行标志或 -std=gnu++98 显式选择它以启用 GNU 扩展。
参见它的文档,在撰写本文时指出:
默认情况下,Clang 根据 C++14 标准构建 C++ 代码。您可以使用 -std=c++14 选项在 C++14 模式下使用 Clang(在 Clang 3.4 及更早版本中使用 -std=c++1y)。
默认的 C++ 语言版本有时会随着 Clang 的更新版本而改变,例如 Clang 6.0 从 gnu++98 到 gnu++14
请参阅它的
/std
标志文档,在撰写本文时它指出:
/std:c++14
选项启用由 MSVC 编译器实现的 C++14 标准特定功能。此选项是编译为 C++ 的代码的默认选项。它从 Visual Studio 2015 Update 3 开始可用。/std:c++14
更改默认值的方式取决于您使用的其他构建工具。
CXXFLAGS
环境变量。另见环境变量文档。相关:CFLAGS、CCFLAGS、CXXFLAGS - 这些变量究竟控制什么?.
CXXFLAGS
环境变量。
如果您不使用构建系统,而是直接从 Bash 等 shell 调用编译器程序,您可以创建一个别名,如
alias g++='g++ -std=c++20'
.
如果您使用的是 IDE,请检查您的 IDE 以了解与设置 C++ 项目的默认语言版本相关的设置。例如,对于 VS Code cpptools 扩展,您将使用的设置是
C_Cpp.default.cppStandard
.
除了为运行编译器的构建系统或 shell 做一些事情之外,我不知道有什么方法可以配置编译器本身。如果您真的想深入了解,您可能需要实际构建编译器的修改版本。