2010-07-26 275 views
2

我想知道是否有可能在gcc/g ++中出現錯誤排除某些文件(我沒有源代碼進行修改的文件),這樣我就可以在不受限制的狀態下繼續使用werror。Werror忽略某些文件

+1

如果你沒有源代碼...那麼你應該已經有一個庫鏈接到。或者你的意思是頭文件? – Akusete 2010-07-26 23:43:08

+0

Err ...如果你沒有源代碼,那麼GCC不會抱怨! – 2010-07-27 00:15:49

+0

似乎是重複http://stackoverflow.com/questions/3308523/how-to-eliminate-external-lib-third-party-warnings-in-gcc – Dummy00001 2010-07-27 15:36:33

回答

0

我唯一的想法是編譯文件,您可以單獨修改文件-Werror,然後將它們與其他對象/庫文件鏈接,而不需要-Werror

+0

如果他們是隻有頭文件: - / – 2010-07-27 00:14:01

3

使用pragma directives與更新(4.2我認爲)版本的gcc關閉 - 包括它們之前的某些標題的錯誤。

您可能想要接受以前問題的答案。

0

@Sam米勒已經給了有關如何做到這一點的參考文檔...

您可以暫時在某些警告禁用-Werror#pragma GCC diagnostics warning "-W<kind>"。例如:

#pragma GCC diagnostic push 
# pragma GCC diagnostic warning "-Wreturn-type" 
# pragma GCC diagnostic warning "-Wmissing-braces" 
# include "legacy-crap.h" 
#pragma GCC diagnostic pop 

較新的gcc將打印在括號中的診斷類別的名稱爲警告/錯誤的一部分:

warning-test.c:11:1: warning: return type defaults to ‘int’ [-Wreturn-type] 

warning-test.c:11:1: error: return type defaults to ‘int’ [-Wreturn-type] 

這可以用於要準確地選擇確切的診斷,應該被視爲警告而不是錯誤,在處理第三方垃圾時,你沒有權力改變。我不知道一個簡短的手來禁用所有的警告("-Wall"將不會有上述#pragma期望的效果),但我認爲這也是很好的明確在這裏。