C6299
aviso C6299: Comparar explicitamente um campo de bits para um tipo booleano renderá resultados inesperados
Esse aviso indicar uma suposição incorreta que Boolianos e os campos de bit são equivalentes.Alocando 1 para campos de 1 bits colocará em seu único bit; entretanto, qualquer comparação desse campo de bit a 1 inclui uma conversão implícita do campo de bit a um inteiro assinado.Isso converte converterá o 1 à-1 armazenado e a comparação pode produzir resultados inesperados.
Exemplo
O código a seguir gera este aviso:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Para corrigir esse aviso, use um campo de bit conforme mostrado no seguinte código:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}