无法在Mac OS X上抑制特定的clang警告

9

我已经设置了-Wno-unused-parameter(和其他一些)编译器标志,确实传递给了编译器,但我仍然收到此警告:

clang++ -c -pipe -Wno-self-assign -Wno-unused-parameter -Wno-unused-variable -g -gdwarf-2 -arch x86_64 -fPIC -Wall -W F/Library/Frameworks -o ../build/cobject.o src/cobject.cpp                                                     ^
src/cobject.cpp:102:68: warning: unused parameter 'client' [-Wunused-parameter]
void cobject::processNetMsg( int type, CNetMsg& msg, CClient& client )
                                                                   ^

因为也指定了-Wall吗?-Wno-...不应该具有优先权吗?如何告诉clang显示除某些警告之外的所有警告?

2
我建议(但不能百分之百确定)你应该以这个顺序放置"-Wall -Wno-...",而不是关闭某些东西(它可能默认就已经关闭了),然后再将“所有事物”打开。 - Mats Petersson
1个回答

12

警告参数的作用类似于开关。例如,当您执行 -Wno-unused-parameter 时,您将关闭该警告,但是在命令行后面执行 -Wall 将其重新打开。参数的顺序很重要。

因此,为了解决这个问题,请将关闭参数放在其被打开之后。


谢谢!我以为clang在处理命令行参数方面会更聪明一些 :) - Violet Giraffe
2
@VioletGiraffe:麻烦的是,“更聪明”是主观的。它表现为切换的原因是这样你可以覆盖从“更全局”的级别继承的参数。所以Clang很聪明,只是不是你想象的那种方式 :) - Matthieu M.
@VioletGiraffe 我不认为相反的更聪明。假设你有-Wunused-function -Wno-unused -Wall;如果顺序无关紧要,那么对你来说什么是“聪明”的结果呢?有时我们倾向于认为我们的偏见是显而易见的。 - Narcolessico
令人困惑的是,gcc表现出不同的行为。-Wno会覆盖-Wall,无论顺序如何。 - johannes_lalala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接