C++ 在不定义所有宏的情况下使用cppcheck

C++ 在不定义所有宏的情况下使用cppcheck,c++,cppcheck,C++,Cppcheck,我在使用boost库的项目上使用cppcheck。这个库中的头包含大量宏,我甚至没有在我的源代码中使用这些宏。尽管如此,cppcheck仍然依赖于这些我认为无用的宏来探索路径。有没有一种方法可以告诉cppcheck忽略所有宏,除非它是在源代码中使用#define?定义的,这不完全是您想要的,但是您可以将define指定给cppcheck,以便它只计算一个分支: 请参见-D/-U选项。以下是cppcheck文档中的必要部分: -D<ID> Define pr

我在使用boost库的项目上使用cppcheck。这个库中的头包含大量宏,我甚至没有在我的源代码中使用这些宏。尽管如此,cppcheck仍然依赖于这些我认为无用的宏来探索路径。有没有一种方法可以告诉cppcheck忽略所有宏,除非它是在源代码中使用#define?

定义的,这不完全是您想要的,但是您可以将
define
指定给cppcheck,以便它只计算一个分支:


请参见
-D
/
-U
选项。

以下是cppcheck文档中的必要部分:

-D<ID>               Define preprocessor symbol. Unless --max-configs or
                     --force is used, Cppcheck will only check the given
                     configuration when -D is used.
                     Example: '-DDEBUG=1 -D__cplusplus'.
-U<ID>               Undefine preprocessor symbol. Use -U to explicitly
                     hide certain #ifdef <ID> code paths from checking.
                     Example: '-UDEBUG'

--最大配置=
要签入文件的最大配置数
在跳过它之前。默认值为“12”。如果一起使用
对于“-force”,最后一个选项是
有效。
这意味着:

cppcheck --force <PATH_TO_YOUR_CODE>
cppcheck——强制
Cppcheck验证预处理器路径的所有组合,这可能导致在大型代码库上的检查时间过长


可以找到相应的文档。

一个选项是将此注释放在有问题的行上方,忽略缺少宏的行:

// cppcheck-suppress unknownMacro

因此,如果我有10个宏,并且我定义了其中3个宏(在编译时或在我的源代码中),我是否需要取消定义其他7个宏?@Brahim:如果您有类似于
#ifdef UNSET_MACRO1
,是的,以避免检查两个路径。
cppcheck --force <PATH_TO_YOUR_CODE>
// cppcheck-suppress unknownMacro