亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從庫頭中隱藏GCC警告?

如何從庫頭中隱藏GCC警告?

臨摹微笑 2019-10-08 09:45:15
我有一個使用log4cxx,boost等庫的項目,其標頭會生成很多(重復)警告。有沒有一種方法可以抑制來自庫包含(例如#include <some-header.h>)或來自某些路徑的包含的警告?我想在項目代碼上照常使用-Wall和/或-Wextra,而不會模糊相關信息。我目前在make輸出上使用grep,但是我想要更好的東西。
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

對于使用CMake的用戶,您可以修改include_directories指令以包括SYSTEM禁止顯示此類標題警告的符號。


include_directories(SYSTEM "${LIB_DIR}/Include")

                               ^^^^^^


查看完整回答
反對 回復 2019-10-08
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

您可以使用編譯指示。例如:


// save diagnostic state

#pragma GCC diagnostic push 


// turn off the specific warning. Can also use "-Wall"

#pragma GCC diagnostic ignored "-Wunused-but-set-variable"


#include <boost/uuid/uuid.hpp>

#include <boost/uuid/uuid_generators.hpp>

#include <boost/uuid/uuid_io.hpp>

#include <boost/lexical_cast.hpp>


// turn the warnings back on

#pragma GCC diagnostic pop


查看完整回答
反對 回復 2019-10-08
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

#pragma是對編譯器的指令。您可以在#include之前設置某些內容,并在之后將其禁用。


您也可以在命令行中執行此操作。


另一個GCC頁面專門關于禁用警告。


我會選擇在源代碼中使用#pragma,然后提供您為什么禁用警告的 合理原因(作為注釋)。這意味著要對頭文件進行推理。


GCC通過對警告類型進行分類來解決此問題。您可以將它們分類為警告或被忽略。先前鏈接的文章將向您顯示可能禁用了哪些警告。


注意:您也可以使用屬性按摩源代碼以防止某些警告。但是,這使您與GCC緊密相關。


注意2:GCC還使用了Microsoft編譯器中使用的pop / push接口 -Microsoft通過此接口禁用警告。我建議您對此進行進一步調查,因為我什至不知道是否有可能。


查看完整回答
反對 回復 2019-10-08
  • 3 回答
  • 0 關注
  • 677 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號