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