Предупреждение C6299

Явное сравнение битового поля с логическим типом приведет к непредвиденным результатам.

Замечания

Это предупреждение указывает на неверное предположение, что логические и битовые поля эквивалентны. Назначение 1 битового поля будет размещать 1 в одном бите; однако любое сравнение этого битового поля с 1 включает неявный приведение битового поля к подписанному int. Этот приведение преобразует сохраненный 1 в -1, а сравнение может привести к непредвиденным результатам.

Имя анализа кода: BITFIELD_TO_BOOL_COMPARISON

Пример

Следующий код создает это предупреждение:

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...
  }
}