2013-04-14 85 views
7

我已經學會了,我可以把GCC,C:找出默認警告名稱在使用的#pragma忽略

#pragma GCC diagnostic ignored "<warning>" 

到源文件的頂部,以抑制與這個特殊的警告源文件。但是,似乎有些名稱不夠具體。例如,

#pragma GCC diagnostic ignored "-Wwrite-strings" 

不會阻止顯示警告信息,其確切名稱沒有給出GCC(4.7.2),取而代之的是,這些消息只能由[默認啓用]緊隨其後。我想我需要知道正確的警告名稱,以便我可以在#pragma行中使用它們。我試過

-fdiagnostics-show-option, 

但是警告仍顯示爲[默認啓用]。

是否有任何方法來識別這些警告,或者可以禁止與特定源文件相關的警告?

非常感謝!

+0

我認爲,使用正確的選項是'-Wno-寫strings' – Bechir

+0

如果我沒有記錯,這是全球範圍內禁止所有相應的警告編譯器選項。我想要做的只是禁用由某些源文件引起的警告。這就是爲什麼我嘗試'#pragma'方法。不過謝謝你! – Guybrush

回答

2

您必須推送並彈出診斷狀態。就像這樣:

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunused-function" 
    /* ignoring warning */ 

    int unused_function(void) { 
     return 1337; 
    } 
#pragma GCC diagnostic pop 
+0

所以我確實把源文件的所有功能放在編譯指令之間,如你所示,用'-Wwrite-strings'。儘管如此,它並沒有抑制來自這個文件的標籤爲「默認啓用」的警告。 – Guybrush

+0

你能分享一下你的gcc命令行看起來像什麼樣的更多信息嗎(即-Wall,-pedantic等等)?你得到了什麼確切的警告? –

+0

我用'-pedantic -Wall -Wshadow -Winterinter-arith -Wwrite-strings'。如果我什麼也沒做,我會得到帶有'-Wshadow','-Wunused-variable','-Wimplicit-function-declaration'和'默認啓用'標籤的警告。將'#pragma GCC診斷配置文件'「'放到相關源文件的頂部,我可以擺脫前三種警告類型,但是我不知道如何處理」默認啓用「來自這些源文件的警告。 – Guybrush

相關問題