C6260
警告 C6260: sizeof * sizeof 幾乎都會得到錯誤的結果,您原先要使用的是字元計數還是位元組計數?
這則警告表示兩項 sizeof 運算的結果已相乘。 C/C++ sizeof 運算子會傳回物件所使用之儲存體的位元組數目。 一般而言,將兩個 sizeof 運算相乘會得到不正確的結果;通常,其中一個 sizeof 會是物件中的位元組數目或陣列中的元素數目 (例如,陣列中寬字元的數目)。
會有某些與 sizeof 運算子相關聯的不易了解行為。 例如,在 C 中,因為字元屬於整數類資料型別 (Integral Type),所以 sizeof ('\0') == 4,。 在 C++ 中,字元常值 (Character Literal) 的型別為 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 ...
}