gcc不匹配的标记选项提供“无法识别的命令行选项”`

gcc不匹配的标记选项提供“无法识别的命令行选项”`,gcc,compiler-warnings,Gcc,Compiler Warnings,我试图在gcc上激活选项-Wmismatched tags(检测不一致的类/结构声明,这可能在使用前向声明时发生),但在Ubuntu上我得到了 c++: error: unrecognized command line option '-Wmismatched-tags' 我的gcc版本: # gcc --version gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 Copyright (C) 2019 Free Software Foundation, I

我试图在gcc上激活选项
-Wmismatched tags
(检测不一致的类/结构声明,这可能在使用前向声明时发生),但在Ubuntu上我得到了

c++: error: unrecognized command line option '-Wmismatched-tags'
我的gcc版本:

# gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
从这里看,它似乎集成在GCC4.9.0中

是我做错了什么,还是这个选项实际上已经不可用了

我知道,但是答案是10岁,我希望在这期间情况有所改善

背景:我在一个项目中需要这个,在这个项目中,我们也使用clang进行构建,并且这些不一致被视为错误

从这里看,它似乎集成在GCC4.9.0中

事实上,没有。2014年报告,但正如OP在 :

我不能代表MS发言,但我发布的最初警告是生成的 叮当作响。它似乎确实担心不匹配的标签

在gcc中,仅在2019年12月和 成为GCC 10发行版的一部分:

$ git describe e8f1ade269a39ea86a76a2440818e1512ed480ee
basepoints/gcc-10-5517-ge8f1ade269a
幸运的是,现在我们有了docker和官方的GCC版本 正式发布为docker图片:

$ docker search gcc
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
gcc                                The GNU Compiler Collection is a compiling s…   587                 [OK]
(...)
所以你可以做:

docker run --rm -it gcc
并将源目录装入docker容器或 使用或任何其他 将代码放入容器并在其中使用最新gcc的首选工具:

root@53d309d5d619:/# g++ --version
g++ (GCC) 10.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@53d309d5d619:/# g++  hello.cpp  -o hello -Wmismatched-tags

实际上,Ubuntu有一个gcc-10软件包,它确实附带了10.2!现在我必须弄清楚如何使它成为默认编译器,这本最近的指南应该可以帮助Docker在这里仍然有巨大的优势——它可以用来创建一个可移植的开发环境。并非所有人都使用Ubuntu(例如我是Slackware用户),有些人根本不使用Linux(实际上,Windows和MacOS可能在台式机上更受欢迎,甚至在开发者中也是如此)。