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

Siehe auch

C26813
C26828