2013-04-17 9 views
5

Mam ustawioną flagę kompilatora -Wno-nieużywanego-parametru (i kilka innych) i rzeczywiście jest ona przekazywana do kompilatora, ale nadal otrzymuję to ostrzeżenie:Niemożliwe stłumienie określonego ostrzeżenia o klangach w systemie Mac OS X

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) 
                   ^

Czy to dlatego, że podano również -Wall? Czy nie powinno być pierwszeństwo w przypadku -Wno-...? Jak powiedzieć klangowi, aby wyświetlał wszystkie ostrzeżenia z wyjątkiem niektórych?

+1

Proponuję (ale nie jestem w 100% pewny), że powinieneś umieścić "-Wall -Wno -..." w tej kolejności, zamiast wyłączać coś (co prawdopodobnie jest domyślnie wyłączone), a następnie włączyć " wszystko". –

Odpowiedz

9

Argumenty ostrzegawcze działają jak przełączniki. Kiedy wykonujesz np. -Wno-unused-parameter wyłączysz to ostrzeżenie, jednak później w wierszu poleceń wykonasz -Wall, który ponownie go włączy. Kolejność argumentów ma znaczenie.

Aby go rozwiązać, należy umieścić argument pozaargumentowy po, gdy jest on włączony.

+0

Dziękujemy! Myślałem, że 'clang' jest mądrzejszy (pod względem argumentów linii poleceń) :) –

+2

@VioletGiraffe: kłopot jest * mądrzejszy * jest subiektywny. Powodem, dla którego zachowuje się jak przełączanie, jest to, że możesz * nadpisywać * argumenty, które dziedziczysz z poziomu "bardziej globalnego". Więc Clang jest sprytny, po prostu nie taki, jak ci się zdawało :) –

+0

@MatthieuM .: dobry punkt, ma sens :) –

Powiązane problemy