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