C6260

警告 C6260:sizeof * sizeof 在绝大部分情况下是错误的,打算使用字符数还是字节数?

此警告意味着将两个 sizeof 运算的结果相乘。C/C++ sizeof 运算符返回对象所使用的存储的字节数。通常,将它与另一个 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 运算符

sizeof 运算符 (C)