Avviso C6299
Il confronto esplicito di un campo di bit con un tipo booleano genererà risultati imprevisti
Osservazioni:
Questo avviso indica un presupposto non corretto che i campi booleani e bit siano equivalenti. L'assegnazione di 1 a campi di bit inserisce 1 nel singolo bit; Tuttavia, qualsiasi confronto tra questo campo di bit e 1 include un cast implicito del campo di bit a un oggetto signed int. Questo cast convertirà l'oggetto archiviato 1 in -1 e il confronto può produrre risultati imprevisti.
Nome dell'analisi del codice: BITFIELD_TO_BOOL_COMPARISON
Esempio
Il codice seguente genera questo avviso:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Per correggere questo avviso, usare un campo di bit come illustrato nel codice seguente:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}
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