2010-07-26 271 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期望的效果),但我认为这也是很好的明确在这里。