簡體   English   中英

抑制GCC警告

[英]Suppress GCC warnings

我有代碼:

#ifdef Q_OS_LINUX
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcomment"
#include "header.h"
#pragma GCC diagnostic pop
#endif

我想要抑制與header.h相關的GCC警告消息以及header.h中包含的所有頭文件。 但我仍然有與header.h中包含的標題相關的'-Wcomment'警告。 我怎么能避免這種情況? 謝謝

gcc 4.8.2

編輯:我得到的警告看起來像這樣:

/ ------設置模擬輸出8022/8026 --------- / Exp8K WORD CALLBACK AnalogOutHex_8K(DWORD dwBuf [],float fBuf [],警告:“/ ”在注釋中[-Wcomment]沒有其他的pragma肯定.-牆不起作用

在編譯C ++時,預編譯器發出的GCC警告不能用任何編譯指示來抑制,編譯C時只能通過編譯指示來抑制它們。您正在編譯為C ++(並且不應該將您的問題標記為C)。 這是一個簡單的測試用例:

#pragma GCC diagnostic ignored "-Wcomment"
/* /* */

這在C ++模式下發出警告,但在C模式下不發出警告。

鑒於pragma不起作用,你應該采取其他方法。 如果您可以修改標題,只需更改注釋即可。 如果無法更改標題,則可以將標題所在的特定目錄標記為系統標題目錄(使用-isystem命令行選項)。

如果可以修改header.h ,則可以使用#pragma GCC system_header將其定義為系統頭 否則,您可以使用-isystem將其添加到gcc命令行。

GCC正在處理系統標題時,除了'#warning'(請參閱診斷)生成的警告之外的所有警告都將被禁止。

您尚未包含完整的cpp文件。 我的猜測是早期的包含已經包含了一些頭文件。 這些頭文件可能會有標題保護,以防止頭文件被包含多次。 因此#pragma並沒有真正做任何事情。

最好的辦法是在包含其他內容之前移動#pragmas並將其包含在頭文件的頂部。 請記住,您還可以推送和彈出診斷編譯指示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM