C6260
avviso C6260: sizeof * sizeof è quasi sempre errato. Si intendeva utilizzare un conteggio di caratteri o un conteggio di byte?
L'avviso indica che i risultati di due operazioni sizeof sono stati moltiplicati tra loro.L'operatore C/C++ sizeof restituisce il numero di byte di archiviazione utilizzati da un oggetto.Di norma, non è corretto moltiplicarlo per un'altra operazione sizeof; di solito si è interessati al numero di byte in un oggetto o al numero di elementi in una matrice (ad esempio, al numero di caratteri estesi).
All'operatore sizeof è associato un comportamento non intuitivo.In C, ad esempio, sizeof ('\0') == 4, perché un carattere è di tipo integrale.In C++ un tipo di carattere letterale è char, pertanto sizeof ('\0') == 1.Tuttavia, sia in C che in C++, l'espressione riportata di seguito è true.
sizeof ("\0") == 2.
Esempio
Il codice seguente genera questo avviso:
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
Per risolvere il problema, utilizzare il codice seguente:
#include <windows.h>
void f( )
{
int i;
i= sizeof (L"String") / sizeof (WCHAR);
/* or to get bytes */
i = sizeof (L"String");
// code ...
}