今天我了解到大多数编译器都提供静态分析,如
SET (CMAKE_CXX_FLAGS "-std=c++1y -Werror -Weverything -Wno-documentation -Wno-c++98-compat -Wno-padded")
我觉得这很酷,但我也使用了一些模板库,当然只有标题。
现在我不能再使用那些标志了,因为那些库充满了“错误/警告”。我可以尝试找到所有这些标志并禁用它们,但我真的希望在我的代码中有这些错误/警告。
有解决方法吗?我想也许我可以尝试找到所有模板实例化,编译没有编译器警告的头文件,然后将预编译头与我的代码链接。
你认为这可能吗?
答案 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
这对于您无法控制代码的第三方库非常有用。