小さい頃はエラ呼吸

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


【cppcheck】Invalid memcmp() argument nr 3. A non-boolean value is required.

はじめに

C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。

error: Invalid memcmp() argument nr 3. A non-boolean value is required.

cppcheckのバージョン
  • v1.65
サンプルプログラム

以下のソースプログラムを解析にかけると表示されます。

int func(char* val, int bufSize)
{
  if (memcmp(val, "hoge", sizeof(bufSize) == 0)) // NG
  // if (memcmp(val, "hoge", sizeof(bufSize)) == 0) // OK
  {
    // 任意の処理
  }

  return 0;
}

上記のように、memcmpの閉じカッコの位置を誤っていると警告が表示されます。