Предупреждение 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...
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по