C6260
Aviso C6260: sizeof * sizeof quase sempre está errada, você pretendia usar uma contagem de caracteres ou uma contagem de bytes?
Este aviso indica que os resultados de dois sizeof as operações foram multiplicadas juntos. O C/C++ sizeof o operador retorna o número de bytes de um objeto de armazenamento usa. É geralmente incorreto multiplique-o por outro sizeof operação; Geralmente, um está interessado em número de bytes em um objeto ou o número de elementos de uma matriz (por exemplo, o número de caracteres de largura de uma matriz).
Há algum comportamento não intuitivos associado sizeof operador. Por exemplo, em C, o sizeof ('\0') == 4, como um caractere é do tipo integral. No C++, o tipo de um caractere literal é char, portanto, sizeof ('\0') == 1. No entanto, em c e C++, a seguir é verdadeira:
sizeof ("\0") == 2.
Exemplo
O código a seguir gera este aviso:
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
Para corrigir esse aviso, use o seguinte código:
#include <windows.h>
void f( )
{
int i;
i= sizeof (L"String") / sizeof (WCHAR);
/* or to get bytes */
i = sizeof (L"String");
// code ...
}