C6299
Actualización: noviembre 2007
C6299
Advertencia C6299: Si compara explícitamente un campo de bits con un tipo booleano tendrá resultados inesperados
Esta advertencia indica que se ha supuesto incorrectamente que los tipos booleanos y los campos de bits son equivalentes. Cuando se asigna 1 a un campo de bits, se coloca 1 en su único bit; sin embargo, cualquier comparación de este campo de bit con 1 incluye una conversión implícita del campo de bit en un entero con signo. Esta conversión de tipos convierte el 1 almacenado en -1, por lo que la comparación puede producir resultados inesperados.
Ejemplo
El código siguiente genera esta advertencia:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Para corregir esta advertencia, utilice un campo de bit como se muestra en el código siguiente:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}