はじめに
C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。
(style) A pointer can not be negative so it is either pointless or an error to check if it is.
cppcheckのバージョン
- v1.65
サンプルプログラム
以下のソースプログラムを解析にかけると表示されます。
#include "stdafx.h" #include <windows.h> LPDWORD func1(); int main(int argc, char *argv[]) { LPDWORD buf = 0; buf = func1(); if(buf < 0) // (style) A pointer can not be negative so it is either pointless or an error to check if it is. { return -1; } return 0; }
上記のように、LPDWORD型の変数bufが負数かどうか調べるコードは意味がありません。
LPDWORDはunsigned longと同じなので、負数が格納されることはありません。