Поделиться через


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

Используйте побитовое значение и проверьте, установлен ли флаг

Замечания

Большинство enum типов с мощностью двух значений элементов предназначены для использования в качестве битовых флагов. В результате вы редко хотите сравнить эти флаги для равенства. Вместо этого извлеките биты, интересующие вас, с помощью побитовых операций.

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

Пример

enum BitWise
{
    A = 1,
    B = 2,
    C = 4
};

void useEqualsWithBitwiseEnum(BitWise a) 
{
    if (a == B) // Warning C26813: Use 'bitwise and' to check if a flag is set
        return;
}

Чтобы устранить предупреждение, используйте побитовые операции:

void useEqualsWithBitwiseEnum(BitWise a) 
{
    if (a & B) // Fixed.
        return;
}

См. также

C26827
C26828