为什么gcc编译器标志未知?

Aym*_*nTM 0 c c++ gcc compiler-errors compiler-flags

在试图添加此标志:-Wshadow=compatible-local (文档)编制,但它只是不断抛出此消息时:


`error: unknown warning option '-Wshadow=compatible-local';
 did you mean '-Wshadow- uncaptured-local'?
 [-Werror,-Wunknown-warning-option]`
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

更新:

注意:我的编译器版本是clang-900.0.39.2.(它说clang即使你输入gcc,因为我正在使用macOS并且很好...... @Aconcagua解释了为什么在下面)


有人知道为什么会这样吗?和/或如何修复它?

小智 5

似乎clang使用了完全不同的标志命名:http://clang.llvm.org/docs/DiagnosticsReference.html#wshadow-uncaptured-local

它应该是-Wshadow-uncaptured-local而不是-Wshadow=compatible-local.