将 clang 警告限制在我的源文件中

Restricting clang warnings to my source files

我正在使用 C 中的库使用 clang 编译程序。我想检查我的程序是否有错误 (-Wall -Weverything) 但我不想检查库。有没有办法将 clang 的警告限制在我的源文件中?

如果库 header 文件在您包含它时生成大量警告,您可以尝试使用一些间接方法(还有什么)来解决。

因此,对于名为 lib_a.h 的库 header,创建一个如下所示的包装器 (my_lib_a.h):

#ifdef __clang__
#  pragma clang diagnostic push
#  pragma clang diagnostic ignored "-Weverything"
#endif

#include "lib_a.h"

#ifdef __clang__
#  pragma clang diagnostic pop
#endif

现在包含它而不是直接包含库 header。

那些 pragams 将仅关闭该特定库的警告 header。

您当然可以添加对其他 tool-chains 的支持,甚至可以使此实用程序 header 成为您程序中所有有问题的 header 的入口点。预编译它可以忽略开销。