打印gcc支持的最新C++标准



GCC系列编译器接受一个参数来指定编译器可以使用的语言标准。

例如,gcc具有--std=gnu++20(或--std=gnu++2a(,而gcc具有--std=gnu18

我所期望的是一种打印本地gcc支持的最新标准的方法(首选bash脚本(。到目前为止,我甚至无法找到打印本地gcc支持的所有标准的方法。

注意:不要与以下内容混淆,因为我要求的是最新标准,而不是默认标准:如何找出我的gcc默认使用的ANSI C标准?

非常感谢@ssbssa。以下是bash脚本的草案版本,它按预期工作

(针对C++标准的gcc 10(:

$ gcc -v --help 2>/dev/null | egrep "gnu++[^I]+ISO [^1]"
-std=gnu++11                Conform to the ISO 2011 C++ standard with GNU extensions.
-std=gnu++14                Conform to the ISO 2014 C++ standard with GNU extensions.
-std=gnu++17                Conform to the ISO 2017 C++ standard with GNU extensions.
-std=gnu++20                Conform to the ISO 2020 C++ draft standard with GNU extensions (experimental and incomplete support).  Same as -std=gnu++2a.
-std=gnu++2a                Conform to the ISO 2020 C++ draft standard with GNU extensions (experimental and incomplete support).

编辑:脚本的最终版本是:

$ gcc -v --help 2>/dev/null | egrep  "gnu++[^I]+ISO [^1]" | egrep -o "-[^ ]+" | tail -n 1
-std=gnu++2a

您可以通过使用空输入文件和不同的-std参数运行它并检查它是否编译来检测它。CMake就是这么做的。

最新更新