C++ Werror忽略某些文件

C++ Werror忽略某些文件,c++,c,gcc,C++,C,Gcc,我想知道是否有可能让gcc/g++中的werror排除某些文件(我没有要修改的源代码的文件),这样我就可以在不受限制的状态下继续使用werror 我唯一的想法是编译您可以使用-Werror单独修改的文件,然后将它们与其他对象/库文件链接,而不使用-Werror使用较新(我认为是4.2)版本的gcc,以便在包含某些标题之前关闭-Werror 您可能希望接受前面问题的答案。@Sam Miller已经提供了有关如何执行此操作的参考文档 您可以使用#pragma GCC diagnostics warn

我想知道是否有可能让gcc/g++中的werror排除某些文件(我没有要修改的源代码的文件),这样我就可以在不受限制的状态下继续使用werror

我唯一的想法是编译您可以使用
-Werror
单独修改的文件,然后将它们与其他对象/库文件链接,而不使用
-Werror

使用较新(我认为是4.2)版本的gcc,以便在包含某些标题之前关闭-Werror


您可能希望接受前面问题的答案。

@Sam Miller已经提供了有关如何执行此操作的参考文档

您可以使用
#pragma GCC diagnostics warning“-W”
暂时禁用某些警告的
-Werror
。例如:

#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]


这可用于准确选择准确的诊断,在处理您无权更改的第三方垃圾时,应将其视为警告而不是错误。我不知道如何简捷地禁用所有警告(
“-Wall”
对上述
#pragma
)不会产生预期效果,但我认为在这里明确显示也是很好的。

如果您没有源代码。。。那么您应该已经有了一个要链接的库。或者你是说头文件?呃。。。如果您没有源代码,那么GCC就不会抱怨了!如果它们是仅头文件,则似乎是重复的:-/
warning-test.c:11:1: error: return type defaults to ‘int’ [-Wreturn-type]