C6260
Предупреждение C6260: конструкция sizeof * sizeof обычно является ошибкой. Вы хотели использовать количество символов или количество байтов?
Данное предупреждение указывает на умножение результатов двух операций sizeof. Оператор sizeof языка C/C++ возвращает количество байтов хранилища, используемых для объекта. Умножение этого значения на результат другой операции sizeof, как правило, является ошибкой; обычно пользователей интересует количество байтов в объекте или количество элементов в массиве (например, количество двухбайтовых знаков в массиве).
С оператором sizeof связано некоторое непонятное на интуитивном уровне поведение. Например, в языке C верно следующее выражение: sizeof ('\0') == 4, поскольку знак принадлежит к целочисленному типу. В C++ литерал знака принадлежит к типуchar, поэтому верно следующее выражение: sizeof ('\0') == 1. Однако и в C, и в C++ верно следующее:
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 ...
}