はじめに
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の閉じカッコの位置を誤っていると警告が表示されます。