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