我試圖編譯在現有的代碼庫中引入-Werror
標誌。我遇到的其中一個問題是在某些地方#warning
用於顯示信息性消息。這些不應該被視爲錯誤。如何防止將#警告消息視爲錯誤?
一種解決方法是使用#pragma message
來代替,但這似乎不被舊版本的gcc支持。 (我們的構建服務器使用gcc 4.1.2)。
任何人都可以幫我解決這個問題嗎?
我試圖編譯在現有的代碼庫中引入-Werror
標誌。我遇到的其中一個問題是在某些地方#warning
用於顯示信息性消息。這些不應該被視爲錯誤。如何防止將#警告消息視爲錯誤?
一種解決方法是使用#pragma message
來代替,但這似乎不被舊版本的gcc支持。 (我們的構建服務器使用gcc 4.1.2)。
任何人都可以幫我解決這個問題嗎?
在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
本地禁用效果如下:
#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wcpp"
#warning Informative message: everything is nice and good!!!
#pragma GCC diagnostic pop
這種方法的好處是,你仍然會感應誤差#warning
在代碼的其他地方。
上面的代碼看起來不適用於gcc 4.1.2 - 我得到了「警告:忽略#pragma GCC診斷」,並且#warning行被拾取爲錯誤(因爲 - 錯誤已定義) –
那麼,你濫用'#警告'。擺脫那個,問題解決了。 –
@CatPlusPlus:發佈替代方案怎麼樣? – UncleBens
@UncleBens:我需要看看它實際上在那裏做了什麼建議替代「除去它」。它有可能被構建系統級別的東西所取代。 –