Warnung C26827
Haben Sie vergessen, eine Enumeration zu initialisieren oder einen anderen Typ zu verwenden?
Hinweise
Die meisten enum
Typen, die in bitweisen Vorgängen verwendet werden, werden erwartet, dass Mitglieder mit Werten von zwei Mächten verfügen. Diese Warnung versucht, Fälle zu finden, in denen ein Wert nicht explizit einer Enumerationskonstante zugewiesen wurde. Außerdem werden Fälle gefunden, in denen der falsche Enumerationstyp versehentlich verwendet wurde.
Codeanalysename: ALMOST_BITWISE_ENUM
Beispiel
Der folgende Beispielcode verursacht Warnungen 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?
}
Um die Warnung zu beheben, initialisieren Sie die Enumerationskonstante auf den richtigen Wert, oder verwenden Sie den richtigen Enumerationstyp im Vorgang.
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.
}