C6260
警告 C6260: 通常、sizeof * sizeof は不適切です。文字数またはバイト数を使用しようとしましたか?
この警告は、2 つの sizeof 演算の結果が乗算されたことを示します。 C/C++ sizeof 演算子は、オブジェクトが使用するストレージのバイト数を返します。 一般に、これを別の sizeof 演算で乗算することは不適切です。なぜなら、通常、求めたいものはオブジェクト内のバイト数または配列内の要素数 (たとえば、配列内のワイド文字の数) だからです。
sizeof 演算子には、直観的ではない動作がいくつか関連付けられています。 たとえば、C では、文字が整数型であるために sizeof ('\0') == 4, です。 C++ では、文字リテラルの型が char なので sizeof ('\0') == 1 です。 ただし、C と C++ のいずれにおいても、以下は true です。
sizeof ("\0") == 2.
使用例
この警告が発生するコード例を次に示します。
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
この警告を解決するには、次のコードを使用します。
#include <windows.h>
void f( )
{
int i;
i= sizeof (L"String") / sizeof (WCHAR);
/* or to get bytes */
i = sizeof (L"String");
// code ...
}