PC Lint,错误613和"复杂"如果

时间:2017-07-24 20:15:56

标签: c++ if-statement nullptr pc-lint

int* ptrF();
void f()
{
    int* p = ptrF();
    bool pOK = p && true;
    if (pOK)
        *p = 12; // Lint thinks p might be nullptr here
}

Lint发出警告

C:\lint_test\nullptr_with_init.cpp(8): Issue 613: (Warning -- Possible use of null pointer 'p' in argument to operator 'unary *' [Reference: file C:\lint_test\nullptr_with_init.cpp: line 6])

有没有人知道是否有设置使Lint更多"聪明"如果p == nullptr

,那么pOK不可能是真的

这比改变代码或抑制警告要好得多,比如

        *p = 12; //lint !e613

编辑:

Pc Lint, how to suppress err 613(Possible use of null ponter) for class with init() 是一个完全不同的问题。那个是关于如何压制警告。 这个是关于如何使Lint检查"复杂" if语句(如果可能)

1 个答案:

答案 0 :(得分:0)

我似乎在这种情况下,将指针转换为bool会有所帮助

bool pOK = (bool)p && true;