cppcheck:双方同样的表达可能是错的

时间:2013-05-22 03:39:58

标签: static-code-analysis cppcheck

#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会给我一个'样式'错误就像 enter image description here 这似乎是cppcheck认为hf == 0和hf == INVALID_HANDLE_VALUE是相同的表达式。 任何人都可以告诉我这是cppcheck的错误或为什么这段代码是样式错误

1 个答案:

答案 0 :(得分:1)

我是Cppcheck开发人员。

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

然而,Cppcheck预处理代码。因此,如果您确实希望收到有关实际问题的警告,那么这种错误警告是不可避免的(条件在逻辑上是相同的)。

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

如果你能接受错误警告,那么我建议你这样做。如果您想要修复此问题,请随时写一张票: http://sourceforge.net/apps/trac/cppcheck/