C6260
Actualización: noviembre 2007
C6260
Advertencia C6260: sizeof * sizeof suele ser erróneo. ¿Deseaba utilizar un recuento de caracteres o un recuento de bytes?
Esta advertencia indica que se han multiplicado entre sí los resultados de dos operaciones sizeof. El operador sizeof de C/C++ devuelve el número de bytes de almacenamiento que un objeto utiliza. Normalmente, es incorrecto multiplicarlo por otra operación sizeof; por regla general, el interés reside en conocer el número de bytes de un objeto o el número de elementos de una matriz (por ejemplo, el número de caracteres de ancho de una matriz).
Existe algún tipo de comportamiento no intuitivo asociado al operador sizeof. Por ejemplo, en C, sizeof ('\0') == 4, porque el tipo de un carácter es integral. En C++, el tipo de un literal de carácter es char, por lo que sizeof ('\0') == 1. Sin embargo, en C y C++, se cumple lo siguiente:
sizeof ("\0") == 2.
Ejemplo
El código siguiente genera esta advertencia:
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
Para corregir esta advertencia, utilice el código siguiente:
#include <windows.h>
void f( )
{
int i;
i= sizeof (L"String") / sizeof (WCHAR);
/* or to get bytes */
i = sizeof (L"String");
// code ...
}