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


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

Вы забыли инициализировать перечисление или планируете использовать другой тип?

Замечания

Большинство enum типов, используемых в побитовых операциях, должны иметь члены со значениями полномочий двух. Это предупреждение пытается найти случаи, когда значение не было явно задано константе перечисления. Он также находит случаи, когда неправильный тип перечисления может использоваться непреднамеренно.

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

Пример

Следующий пример кода вызывает предупреждение C26827:

enum class AlmostBitWise
{
    A = 1,
    B = 2,
    C = 4,
    D
};

int almostBitwiseEnums(AlmostBitWise a, bool cond) 
{
    return (int)a|(int)AlmostBitWise::A; // Warning C26827: Did you forget to initialize an enum, or intend to use another type?
}

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

enum class AlmostBitWise
{
    A = 1,
    B = 2,
    C = 4,
    D = 8
};

int almostBitwiseEnums(AlmostBitWise a, bool cond) 
{
    return (int)a|(int)AlmostBitWise::A; // No warning.
}

См. также

C26813
C26828