はじめに
C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。
(warning) The 2nd memset() argument '8224' doesn't fit into an 'unsigned char'.
cppcheckのバージョン
- v1.66
サンプルプログラム
以下のソースプログラムを解析にかけると表示されます。
#include "stdafx.h" #include <windows.h> int _tmain(int argc, _TCHAR *argv[]) { typedef struct test{ char a; char b; char c; } ST_TEST; ST_TEST t; memset(&t, 0x2020, sizeof(ST_TEST)); //->The 2nd memset... //memset(&t, 2020, sizeof(ST_TEST)); }
上記のように、半角スペースで初期化しようとして、誤って0x20を0x2020とすると警告がでます。
実行してみるとちゃんと半角スペースで初期化されているので、問題にはならなそうです。