Condividi tramite


Avviso C26813

Usare "bit per bit" e per verificare se è impostato un flag

Osservazioni:

La maggior parte dei enum tipi con potenza di due valori membro deve essere usata come flag di bit. Di conseguenza, raramente si vuole confrontare questi flag per verificarne l'uguaglianza. Estrarre invece i bit a cui si è interessati usando operazioni bit per bit.

Nome dell'analisi del codice: USE_BITWISE_AND_TO_CHEK_ENUM_FLAGS

Esempio

enum BitWise
{
    A = 1,
    B = 2,
    C = 4
};

void useEqualsWithBitwiseEnum(BitWise a) 
{
    if (a == B) // Warning C26813: Use 'bitwise and' to check if a flag is set
        return;
}

Per correggere l'avviso, usare operazioni bit per bit:

void useEqualsWithBitwiseEnum(BitWise a) 
{
    if (a & B) // Fixed.
        return;
}

Vedi anche

C26827
C26828