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

How can I control static analyzed compiler error messages with templated libraries?

本文关键字:静态分析 编译器 错误 消息 控制 何使用      更新时间:2023-10-16

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

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

我认为这真的很酷,但我也使用了一些模板化库,当然这些库只是标题。

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

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

你认为这可能吗?

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

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

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