cppcheck - 移植可能性の意味

 クラウディア
概要
memsetClassFloat
readdirCalled
strtokCalled

概要

 バージョン 1.81 の頃は、このレベルはなかったように思います。  新しいレベルでしょうか。  「移植可能性」っていう言葉は、なんだか訳を間違えているような気がします。  今、知っている範囲では、スレッドセーフな関数と非スレッドセーフな関数がある場合、非スレッドセーフな関数を使用していると、スレッドセーフな関数を使用するように促しているように見えます。

memsetClassFloat

ID: memsetClassFloat
Using memset() on struct which contains a floating point number. This is not portable because memset() sets each byte of a block of memory to a specific value and the actual representation of a floating-point value is implementation defined. Note: In case of an IEEE754-1985 compatible implementation setting all bits to zero results in the value 0.0.
 これは、正に「移植可能性」っていうのかな・・・。  「VC++」で用意されている

SecureZeroMemory(変数のアドレス, sizeof(変数));
 てのを使用していたら、表示されました。  それは、移植できませんわな。  汎用的に記述するとすれば

memset(変数のアドレス, 0, sizeof(変数));
 となります。  ところが、じゃ。上記のように修正しても表示されるようです。  いったい、どうしたらいいのか、わからなくなってきました。

readdirCalled

ID:readdirCalled
Non reentrant function 'readdir' called. For threadsafe applications it is recommended to use the reentrant replacement function 'readdir_r'.
 readdir よりも readdir_r を使いなさいと言っています。

strtokCalled

ID:strtokCalled
Non reentrant function 'strtok' called. For threadsafe applications it is recommended to use the reentrant replacement function 'strtok_r'.
 「strtok」を使用しているけど、「strtok_r」を使用した方がいいでっせと言っているようです。