読者です 読者をやめる 読者になる 読者になる

小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【cppcheck】A pointer can not be negative so it is either pointless or an error to check if it is

はじめに

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と同じなので、負数が格納されることはありません。