如何使用模板化库控制静态分析的编译器错误消息?

时间:2014-12-30 19:42:21

标签: c++ clang

今天我了解到大多数编译器都提供静态分析,如

SET (CMAKE_CXX_FLAGS "-std=c++1y -Werror -Weverything -Wno-documentation -Wno-c++98-compat -Wno-padded")

我觉得这很酷,但我也使用了一些模板库,当然只有标题。

现在我不能再使用那些标志了,因为那些库充满了“错误/警告”。我可以尝试找到所有这些标志并禁用它们,但我真的希望在我的代码中有这些错误/警告。

有解决方法吗?我想也许我可以尝试找到所有模板实例化,编译没有编译器警告的头文件,然后将预编译头与我的代码链接。

你认为这可能吗?

1 个答案:

答案 0 :(得分:2)

gcc和clang都支持Diagnostic Pragmas,这将允许您忽略一段代码的特定诊断消息。例如,像这样禁用-Wunused-variable

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
// include headers with warnings
#pragma GCC diagnostic pop

这对于您无法控制代码的第三方库非常有用。