【发布时间】:2019-02-19 21:07:03
【问题描述】:
编译时尝试添加此标志:-Wshadow=compatible-local (documentation) 但它只是不断抛出此消息:
`error: unknown warning option '-Wshadow=compatible-local';
did you mean '-Wshadow- uncaptured-local'?
[-Werror,-Wunknown-warning-option]`
我的 makefile 片段:
# COMPILER & FLAGS ============================================================
CC = gcc
CFLAGS = -g -std=c11 -O3 \
-Wall -Wextra -Werror \
-Wshadow -Wshadow=compatible-local \
-Wno-sign-compare \
-fsanitize=integer \
-fsanitize=undefined \
-fsanitize=address -fsanitize-address-use-after-scope
更新:
注意:我的编译器版本是clang-900.0.39.2。 (即使您输入gcc,它也会显示clang,因为我使用的是macOS,而且……@Aconcagua 在下面解释了原因)
有人知道为什么会这样吗?和/或如何解决?
【问题讨论】:
-
我相信这是两个不同的标志,在documentation 中有不同的段落。所以是的,一个用于
-Wshadow,另一个用于-Wshadow=compatible-local...如果我做错了,请纠正我。 -
什么 gcc 版本?也许您的版本太旧,无法支持该标志。
-
那不是 gcc。那是叮当声。
-
可能是兼容性链接/别名
-
前段时间,GCC 是 MacOS 上的默认编译器,后来 Apple 决定改用 clang 作为默认编译器。假设他们将 GCC 链接到 clang 以避免人们想知道为什么编译器消失了(嗯,更合理:不要破坏任何构建系统......)。好主意?至少在不兼容的情况下会导致混乱......
标签: c++ c gcc compiler-errors compiler-flags