Condividi tramite


Avviso C26827

Si è dimenticato di inizializzare un'enumerazione o di usare un altro tipo?

Osservazioni:

La maggior parte dei enum tipi usati nelle operazioni bit per bit deve avere membri con valori di poteri di due. Questo avviso tenta di trovare i casi in cui un valore non è stato assegnato in modo esplicito a una costante di enumerazione. Trova anche casi in cui il tipo di enumerazione errato potrebbe essere stato usato inavvertitamente.

Nome dell'analisi del codice: ALMOST_BITWISE_ENUM

Esempio

Il codice di esempio seguente causa l'avviso 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?
}

Per correggere l'avviso, inizializzare la costante di enumerazione sul valore corretto oppure utilizzare il tipo di enumerazione corretto nell'operazione.

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

Vedi anche

C26813
C26828