如何找到我的编译器使用的默认 c++ 版本并更改它?

问题描述 投票:0回答:1

我想知道我的编译器使用的默认 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 会很好但是保持最新并且不必使用标志。

c++ g++ clang
1个回答
1
投票

请注意,在带有 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 扩展。

还相关:使用 g++ 编译时默认使用哪个 C++ 标准?

对于 Clang

参见它的文档,在撰写本文时指出:

默认情况下,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

对于 MSVC

请参阅它的

/std
标志文档,在撰写本文时它指出:

/std:c++14

/std:c++14
选项启用由 MSVC 编译器实现的 C++14 标准特定功能。此选项是编译为 C++ 的代码的默认选项。它从 Visual Studio 2015 Update 3 开始可用。

更改默认值

更改默认值的方式取决于您使用的其他构建工具。

除了为运行编译器的构建系统或 shell 做一些事情之外,我不知道有什么方法可以配置编译器本身。如果您真的想深入了解,您可能需要实际构建编译器的修改版本。

相关问题:Set as default C++11 in Clang.

© www.soinside.com 2019 - 2024. All rights reserved.