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