Cppcheck无法找到包含文件。

37

cppcheck找不到甚至是iostream这样的标准头文件,有什么想法吗?

我正在使用Ubuntu 11.04和来自存储库的cppcheck。


检查它们是否已安装... - eugene_che
1
@tyz: 我认为这个想法是cppcheck知道ANSI/C++而不需要任何头文件。所以我认为它甚至不会理解gcc特定的系统头文件等。 - user405725
2个回答

39

在Mac和Linux上,cppcheck很难发现标准包含头文件。不过,你可以禁止该检查,并只扫描你的自定义头文件:

cppcheck --enable=all --suppress=missingIncludeSystem .

5
使用这个抑制标志会出现以下错误:不匹配的抑制项:missingIncludeSystem... 这是意味着检查没有抑制任何错误吗?我能否抑制未被抑制的抑制错误呢?O:) - helmesjo
3
是的,你可以通过使用 --suppress=unmatchedSuppression 命令来抑制“未匹配抑制”错误。 :) - Eric Backus
1
根据man页面的描述,我认为现在应该叫做missingInclude - gerowam

25

不建议提供标准C/C++头文件的路径 - Cppcheck 对 ANSI C/C++ 有内部知识,不建议重新定义这个已知的功能。但是可以随意尝试。

-I [dir]

提供包含路径。使用多个-I参数来提供多个路径。 首先检查给定的第一个路径。如果路径相对于源文件,则不需要此操作。


4
如果引入了很多头文件,-I选项可能会使cppcheck运行非常缓慢。 - Drew Noakes
7
别把它和“-i”(忽略)选项搞混了。 - Andy Krouwel
我认为这是一个更好的答案,至少对我来说是这样的,因为我的标头文件不在项目根目录中。所以,如果抑制警告,将不会检查任何标头文件。 - tjysdsg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接