我尝试将PCLint与c ++一起使用。 我使用的是Eigen header only库,它在我的cmake文件中被定义为include目录。我尝试了以下命令:
lint-nt.exe std.lnt -i"pathToEigenLibrary" "listOfFileToLint"
问题是我不知道我必须在我的std.lnt中写什么来忽略Eigen库上的错误。我试过了:
-wlib(0)
-libh("pathToEigenLibrary")
-libdir("pathToEigenLibrary")
任何人都有这方面的经验吗?
我收到很多错误:
\Eigen\Eigen\src\Core\util\XprHelper.h 337 Error 1048: expected a constant expression
Eigen\Eigen\src\Core\util\XprHelper.h 279 Error 1048: expected a constant expression
While instantiating struct Eigen::internal::nested<Eigen::DiagonalProduct<<1>,<2>,<3>>> at File Eigen\Eigen\src\Core\DiagonalProduct.h line 50
答案 0 :(得分:0)
从PC-lint手册:
如果出现以下情况,头文件可以成为库头文件:
(i)它属于选项+ libclass的四大类之一,即。 all,ansi,angle和foreign(如下所述),并且不被-libdir或-libh选项排除。
...
以下是对用于指定头文件是否或何时是库头文件的三个选项的更完整描述 •+ libclass(标识符[,标识符] ...)
指定假定为库头文件的头文件集。每个标识符可以是以下之一:angle用尖括号指定的所有标题。
...
因此,如果您按#include <library.h>
(而非#include "library.h"
)添加库,则可以使用libclass(angle)
忽略库标题。我没有PC-lint,因此无法测试它,所以请带上一粒盐。
答案 1 :(得分:0)
我尝试使用PC-lint和使用Eigen的代码,我最终放弃了。截至6个月前,PC-lint对某些特征码进行了扼流,可能无法生成有用的诊断信息。