Sdílet prostřednictvím


Upozornění C26827

Zapomněli jste inicializovat výčt nebo chcete použít jiný typ?

Poznámky

U většiny enum typů používaných v bitových operacích se očekává, že členové mají hodnoty mocnin dvou. Toto upozornění se pokusí najít případy, kdy nebyla hodnota explicitně předána výčtové konstantě. Najde také případy, kdy byl omylem použit nesprávný typ výčtu.

Název analýzy kódu: ALMOST_BITWISE_ENUM

Příklad

Následující ukázkový kód způsobí upozornění 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?
}

Chcete-li opravit upozornění, inicializace výčtu konstanty na správnou hodnotu nebo použijte správný typ výčtu v operaci.

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

Viz také

C26813
C26828