Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用模板库控制静态分析的编译器错误消息?_C++_Clang - Fatal编程技术网

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

C++ 如何使用模板库控制静态分析的编译器错误消息?,c++,clang,C++,Clang,今天我了解到大多数编译器提供静态分析,比如 SET (CMAKE_CXX_FLAGS "-std=c++1y -Werror -Weverything -Wno-documentation -Wno-c++98-compat -Wno-padded") 我认为这很酷,但我也使用了一些模板库,当然它们只是标题 现在我不能再使用这些标志了,因为这些库中充满了“错误/警告”。我可以尝试查找所有这些标志并禁用它们,但我真的希望在代码中包含这些错误/警告 有解决办法吗?我想也许我可以尝试找到所有的模板实

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

SET (CMAKE_CXX_FLAGS "-std=c++1y -Werror -Weverything -Wno-documentation -Wno-c++98-compat -Wno-padded")
我认为这很酷,但我也使用了一些模板库,当然它们只是标题

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

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


您认为这可能吗?

gcc和clang支持都允许您忽略某段代码的特定诊断消息。例如,要禁用
-Wunused变量
,如下所示:

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

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

主题外,但是
-Weverything
不是您可能期望的标志,尤其是与
-Werror
一起使用<代码>gcc不提供标志,因此不可移植。假设
-Wall-Wextra-Wshadow-Wbad函数cast-Wcast align
应该可以满足大多数情况。@HongxuChen噢,天哪,我之前错过了
-Weverything
,请注意,事实并非如此。