gcc mismatched-tags 选项给出“无法识别的命令行选项”
gcc mismatched-tags option giving `unrecognized command line option`
我试图在 gcc 上激活选项 -Wmismatched-tags
(检测不一致的 class/struct 声明,这可能在使用前向声明时发生),但是在 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.
看这里好像是集成在gcc 4.9.0中的
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61339
是我做错了什么,还是该选项实际上不再可用了?
我知道 Can GCC produce struct/class name mismatches like VS?,但答案是 10 年前的,我希望在此期间情况有所改善。
背景:我在一个项目中需要这个,我们也使用 clang 构建,并且这些不一致被视为错误。
Looking here it seems like it was integrated in gcc 4.9.0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61339
其实不然。它是在 2014 年报道的,但正如 OP 在
#5th post:
I can't speak for MS, but the original warning I posted was produced
by clang. It does seem to worry about mismatched tags.
在 gcc -Wmismatched-tags
中仅在 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 容器中,或者
为 docker 使用 TRAMP 集成
容器 或任何其他
将代码放入容器并在其中使用最新 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
我试图在 gcc 上激活选项 -Wmismatched-tags
(检测不一致的 class/struct 声明,这可能在使用前向声明时发生),但是在 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.
看这里好像是集成在gcc 4.9.0中的 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61339
是我做错了什么,还是该选项实际上不再可用了?
我知道 Can GCC produce struct/class name mismatches like VS?,但答案是 10 年前的,我希望在此期间情况有所改善。
背景:我在一个项目中需要这个,我们也使用 clang 构建,并且这些不一致被视为错误。
Looking here it seems like it was integrated in gcc 4.9.0 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61339
其实不然。它是在 2014 年报道的,但正如 OP 在 #5th post:
I can't speak for MS, but the original warning I posted was produced by clang. It does seem to worry about mismatched tags.
在 gcc -Wmismatched-tags
中仅在 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 容器中,或者 为 docker 使用 TRAMP 集成 容器 或任何其他 将代码放入容器并在其中使用最新 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