C6299
Предупреждение C6299: явное сравнение битового поля с логическим типам приведет к непредвиденным результатам.
Это предупреждение указывает на неверное предположение о том, что логические и битовые поля эквивалентны. Присвоение 1 битовым полям приведет к добавлению 1 в их единственный бит; однако любое сравнение этого битового поля с 1 подразумевает неявное приведение его к целочисленному типу со знаком. В результате такого приведения сохраненная 1 будет преобразована в -1, и сравнение может привести к непредсказуемым результатам.
Пример
Это предупреждение создается следующим кодом:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Чтобы устранить это предупреждение, используйте битовое поле, как показано в следующем коде:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}