我想知道是否有可能在gcc / g ++中排除某些文件(我没有要修改的源代码的文件),以便我可以继续在不受禁止的状态下使用werror。
答案 0 :(得分:3)
使用pragma directives与更新(4.2我认为)的gcc版本关闭某些标题之前的错误 -
您可能希望接受以前问题的答案。
答案 1 :(得分:0)
我唯一的想法是编译您可以使用-Werror
单独修改的文件,然后将它们与其他对象/库文件链接,而不用-Werror
。
答案 2 :(得分:0)
您可以使用-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
不会产生预期效果),但我认为在此明确表示也是好的。