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就是这么做的。