2013-04-17 34 views
5

Tôi đã đặt cờ trình biên dịch -Wno-unused-parameter (và một số khác), và nó thực sự được chuyển đến trình biên dịch, nhưng tôi vẫn nhận được cảnh báo này:Không thể chặn cảnh báo tiếng kêu cụ thể trên 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) 
                   ^

Có phải vì -Wall cũng được chỉ định không? Không nên -Wno-... được ưu tiên? Làm thế nào để nói với clang để hiển thị tất cả các cảnh báo ngoại trừ một số?

+1

Tôi sẽ đề nghị (nhưng không chắc chắn 100%) bạn nên đặt "-Wall -Wno -..." theo thứ tự đó, thay vì tắt một cái gì đó (có thể là tắt theo mặc định anyway), sau đó bật " mọi điều". –

Trả lời

9

Các đối số cảnh báo hoạt động như các nút gạt. Khi bạn thực hiện ví dụ: -Wno-unused-parameter bạn tắt cảnh báo đó, tuy nhiên sau đó trên dòng lệnh bạn thực hiện -Wall sẽ bật lại tính năng này. Thứ tự của các đối số quan trọng.

Vì vậy, để giải quyết, hãy đặt đối số tắt sau tính năng này được bật.

+0

Cảm ơn bạn! Tôi nghĩ 'clang' thông minh hơn (về xử lý đối số dòng lệnh) :) –

+2

@VioletGiraffe: rắc rối là * thông minh hơn * là chủ quan. Lý do nó hành động như toggles là cách này bạn có thể * ghi đè * đối số mà bạn kế thừa từ một mức độ "toàn cầu hơn". Vì vậy, Clang là thông minh, chỉ cần không phải là cách bạn nghĩ đó là :) –

+0

@MatthieuM .: tốt điểm, có ý nghĩa :) –