1
#ifdef TEST
#define INVALID_HANDLE_VALUE 0
#else
#include <windows.h>
#endif


int main()
{
HANDLE hf = 0;
if (hf==0 || hf==INVALID_HANDLE_VALUE)
{}
}

以上是我的测试代码,当我使用 cppcheck.exe(1.58) 检查此代码时,cppcheck 会给我一个“样式”错误, 在此处输入图像描述 这似乎是 cppcheck 认为 hf == 0 和 hf == INVALID_HANDLE_VALUE 是相同的表达式。谁能告诉我这是 cppcheck 的错误或为什么这段代码是样式错误

4

1 回答 1

1

我是一名 Cppcheck 开发人员。

我同意这是一个错误的警告。

但是 Cppcheck 会预处理代码。因此,如果您确实想对实际问题发出警告,那么这种错误警告是不可避免的(条件在逻辑上是相同的)。

也许这个检查应该由 --inconclusive 激活,因为使用宏时可能会出现错误警告。

如果您可以忍受错误警告,那么我建议您这样做。如果您想解决此问题,请随时写一张票:http: //sourceforge.net/apps/trac/cppcheck/

于 2013-05-22T08:43:40.800 回答