2013-06-11 75 views
0

我見過questions like this,但我不知道該如何獲得標記名稱或如何正確忽略它。獲取並忽略編譯器警告的名稱

一個我遇到問題的例子是在線76上的Reachability.h;我收到了警告消息"Declaration of 'struct sockaddr_in' will not be visible outside of this function"

我該如何去取得這個文件的名稱並忽略這個警告?請問我把這樣的事情:

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wsemantic-issue" 
//reachabilityWithAddress- Use to check the reachability of a particular IP address. 
+ (Reachability *)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress; 
#pragma clang diagnostic pop 

我也一直在尋找這些資源:

1

2

3

4

乙我仍然處於虧損狀態。

我使用LLVM 5.0

回答

1

如果可達性類不是你的類,你會不會改變原有的代碼,那麼你別無選擇。

相反,如果您想更改原始代碼,請獲取結構聲明並移至.h類。它會糾正警告。

如果您只是想刪除警告,請使用#pragma clang診斷忽略「-w」而不是「-Wsemantic-issue」。它將刪除推線和彈出線之間的所有警告。

+0

我並不是完全想要解決我提到的警告,因爲它只是一個例子。有些情況下,警告無法解決,但是不必要的,例如[在這種情況下](http://stackoverflow.com/a/17054246/1292230)以及我有的其他一些情況。我只是提出了這個問題,因爲它是一個相當通用而且很有名的課程。如果可能的話,我希望能夠回答這個問題。至於這個錯誤,'struct'是在一個外部庫中聲明的,在.h文件中聲明的內容過多。 – RileyE

+0

因此,在你的情況下,嘗試使用#pragma clang診斷忽略「-w」,而不是「-Wsemantic-issue」。它將刪除所有警告。 – Bivis

+0

雖然我不想刪除所有警告。我需要推動和流行嗎? – RileyE