2011-12-14 76 views
8

我試圖編譯在現有的代碼庫中引入-Werror標誌。我遇到的其中一個問題是在某些地方#warning用於顯示信息性消息。這些不應該被視爲錯誤。如何防止將#警告消息視爲錯誤?

一種解決方法是使用#pragma message來代替,但這似乎不被舊版本的gcc支持。 (我們的構建服務器使用gcc 4.1.2)。

任何人都可以幫我解決這個問題嗎?

+5

那麼,你濫用'#警告'。擺脫那個,問題解決了。 –

+4

@CatPlusPlus:發佈替代方案怎麼樣? – UncleBens

+1

@UncleBens:我需要看看它實際上在那裏做了什麼建議替代「除去它」。它有可能被構建系統級別的東西所取代。 –

回答

4

在gcc-4.6及以上版本中,您可以使用-Wno-error=cpp。至少在Lion和後來發佈的叮噹聲中,您可以使用-Wno-error=#warnings。但是由於你的構建服務器使用了一個古老的gcc,你可能在那裏運氣不好。

一般情況下,通過-fdiagnostics出現選項有警告顯示像輸出:

test.cc:1:2: warning: #warning hello [-Wcpp] 

告訴你,控制警告的警告標誌。在gcc> = 4.6和clang中,這是默認值,所以知道通過它可能不再有用。的-Werror#warning

1

本地禁用效果如下:

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-Wcpp" 
#warning Informative message: everything is nice and good!!! 
#pragma GCC diagnostic pop 

這種方法的好處是,你仍然會感應誤差#warning在代碼的其他地方。

+2

上面的代碼看起來不適用於gcc 4.1.2 - 我得到了「警告:忽略#pragma GCC診斷」,並且#warning行被拾取爲錯誤(因爲 - 錯誤已定義) –