C6299
Aviso C6299: Comparar explicitamente um campo de bit para um tipo booleano, produzirá resultados inesperados
Este aviso indica uma pressuposição incorreta booleanos e campos de bits são equivalentes. Atribuindo 1 campos de bit colocará 1 no seu único bit; No entanto, qualquer comparação deste campo de bit 1 inclui uma conversão implícita do campo bit para um int. assinado Essa conversão converterá o armazenado 1 -1 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 bits, conforme mostrado no código a seguir:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}