只選擇部分翻譯單元禁用GCC警告?與此MSVC預(yù)處理器代碼最接近的GCC是什么?#pragma warning( push ) // Save the current warning state.#pragma warning( disable : 4723 ) // C4723: potential divide by 0// Code which would generate warning 4723.#pragma warning( pop ) // Restore warnings to previous state.我們在常用的標題中包含代碼,我們不希望生成特定的警告。但是,我們希望包含這些標頭的文件繼續(xù)生成該警告(如果項目啟用了該警告)。
3 回答

富國滬深
TA貢獻1790條經(jīng)驗 獲得超9個贊
這可以在GCC自4.6版本開始實施,或者在2010年6月左右在主干中實現(xiàn)。
這是一個例子:
#pragma GCC diagnostic push#pragma GCC diagnostic error "-Wuninitialized" foo(a); /* error is given for this one */#pragma GCC diagnostic push#pragma GCC diagnostic ignored "-Wuninitialized" foo(b); /* no diagnostic for this one */#pragma GCC diagnostic pop foo(c); /* error is given for this one */#pragma GCC diagnostic pop foo(d); /* depends on command line options */

大話西游666
TA貢獻1817條經(jīng)驗 獲得超14個贊
我做了類似的事情。對于第三方代碼,我根本不想看到任何警告。所以,而不是指定-I/path/to/libfoo/include
,我用過-isystem /path/to/libfoo/include
。這使得編譯器將這些頭文件視為“系統(tǒng)頭”以用于警告,并且只要您不啟用-Wsystem-headers
,您就大多數(shù)都是安全的。我仍然看到一些警告泄漏出去,但它減少了大部分垃圾。
請注意,如果您可以通過include-directory隔離違規(guī)代碼,這只會對您有所幫助。如果它只是您自己項目的一個子集,或者與其他代碼混合在一起,那么您就不走運了。
- 3 回答
- 0 關(guān)注
- 678 瀏覽
添加回答
舉報
0/150
提交
取消