C6299
Aggiornamento: novembre 2007
C6299
avviso C6299: il confronto esplicito di un campo di bit con un tipo Boolean produrrà risultati imprevisti
L'avviso indica una supposizione errata che campi di bit e tipi Boolean siano equivalenti. L'assegnazione del valore 1 ai campi di bit collocherà 1 nel relativo bit singolo. Tuttavia, qualsiasi confronto di questo campo di bit con 1 include un cast implicito del campo di bit a un valore int con segno. Il cast convertirà il valore 1 in un -1 e il confronto potrà condurre a risultati imprevisti.
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 risolvere il problema, utilizzare un campo di bit come riportato nel codice seguente:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}