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