Поделиться через


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 ...
}

См. также

Ссылки

sizeof Operator

sizeof Operator (C)