gpt4 book ai didi

c++ - 编译器标准支持(c++11、c++14、c++17)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:30 26 4
gpt4 key购买 nike

如何找到我的 GCC 编译器支持哪些标准?我不是说我如何在编译时找出正在使用什么 C++ 标准(检查定义的常量),而是在编译之前,我如何检查可用的标准以使用(即标志 -std=c++? ?)?

man g++ 中不存在该信息。

除了手动尝试选项之外,我还可以通过 g++ --version 检查我的 GCC 版本吗?

是否可以在某处找到 GCC 版本和支持标准的表格?

最佳答案

因此,在尝试清除我的 sed 上的一些灰尘之后技能,我能够想出这个命令:

gcc -v --help 2> /dev/null | sed -n '/^ *-std=\([^<][^ ]\+\).*/ {s//\1/p}'

它处理 g++ -v --help 的输出(将它打印到 stderr 的额外信息静音),匹配以 -std= 开头的行然后捕获值。 ^<是为了阻止 -std=<standard>帮助线。以下是 GCC 9 的一些示例输出:

f2003
f2008
f2008ts
f2018
f95
gnu
legacy
c++03
c++0x
c++11
c++14
c++17
c++1y
c++1z
c++2a
c++98
c11
c17
c18
c1x
c2x
c89
c90
c99
c9x
gnu++03
gnu++0x
gnu++11
gnu++14
gnu++17
gnu++1y
gnu++1z
gnu++2a
gnu++98
gnu11
gnu17
gnu18
gnu1x
gnu2x
gnu89
gnu90
gnu99
gnu9x
iso9899:1990
iso9899:199409
iso9899:1999
iso9899:199x
iso9899:2011
iso9899:2017
iso9899:2018

您可以添加 grep在中间根据帮助描述文本进行过滤,这在帮助输出中很方便地保持一致。例如。如果你想删除已弃用的:

gcc -v --help 2> /dev/null | grep -iv deprecated | sed -n '/^ *-std=\([^<][^ ]\+\).*/ {s//\1/p}'

如果您只想列出未弃用的 C++:

gcc -v --help 2> /dev/null | grep -iv deprecated | grep "C++" | sed -n '/^ *-std=\([^<][^ ]\+\).*/ {s//\1/p}'

如果你只想列出未弃用的 C:

gcc -v --help 2> /dev/null | grep -iv deprecated | grep "C " | sed -n '/^ *-std=\([^<][^ ]\+\).*/ {s//\1/p}'

这些非常老套,依赖于“已弃用”、“C++”和/或“C”(注意 grep "C " 末尾的空格!)出现在每个标准名称的帮助描述中,但它们似乎有效.

您可以类似地过滤掉例如"same as"去掉同义词等。

关于c++ - 编译器标准支持(c++11、c++14、c++17),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34836775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com