Udostępnij za pośrednictwem


Ostrzeżenie C26827

Czy zapomnisz zainicjować wyliczenie lub zamierzasz użyć innego typu?

Uwagi

Oczekuje się, że większość enum typów używanych w operacjach bitowych ma elementy członkowskie z wartościami uprawnień dwóch. To ostrzeżenie próbuje znaleźć przypadki, w których wartość nie została jawnie nadana stałej wyliczenia. Znajduje również przypadki, w których niewłaściwy typ wyliczenia mógł zostać użyty przypadkowo.

Nazwa analizy kodu: ALMOST_BITWISE_ENUM

Przykład

Poniższy przykładowy kod powoduje ostrzeżenie 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?
}

Aby naprawić ostrzeżenie, zainicjuj stałą wyliczenia do poprawnej wartości lub użyj poprawnego typu wyliczenia w operacji.

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

Zobacz też

C26813
C26828