Avviso C6260
sizeof
*sizeof
è quasi sempre sbagliato, hai intenzione di usare un conteggio dei caratteri o un conteggio dei byte?
Questo avviso indica che i risultati di due sizeof
operazioni sono stati moltiplicati insieme.
Osservazioni:
L'operatore C/C++ sizeof
restituisce il numero di byte utilizzati da un oggetto di archiviazione. In genere non è corretto moltiplicarlo per un'altra sizeof
operazione. In genere, si è interessati al numero di byte in un oggetto o al numero di elementi in una matrice, ad esempio il numero di caratteri wide in una matrice.
Esiste un comportamento poco intuitivo associato all'operatore sizeof
. Ad esempio, in C, sizeof ('\0') == 4
, perché un carattere è di un tipo integrale. In C++, il tipo di un valore letterale carattere è char
, quindi sizeof ('\0') == 1
. Tuttavia, sia in C che in C++, la relazione seguente è vera:
sizeof ("\0") == 2
Nome dell'analisi del codice: USEOFBYTEAREA
Esempio
Il codice seguente genera questo avviso:
#include <windows.h>
void f( )
{
int i;
i = sizeof (L"String") * sizeof (WCHAR);
// code ...
}
Per correggere questo avviso, usare il codice seguente:
#include <windows.h>
void f( )
{
// use divide to calculate how many WCHAR characters are in the string
int i = sizeof (L"String") / sizeof (WCHAR);
// get the number of bytes in the character array
int j = sizeof (L"String");
// code ...
}
Vedi anche
- sizeof Operator (Operatore sizeof)
- Operatore sizeof (C)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per