Originariamente inviato da Gil Mour
Sto lavorando con una libreria proprietaria (non ho i sorgenti).
Naturalmente ho tutti gli header, ed ho una struttura enum che contiene dei codici di errore.

La struttura contiene 20 campi, il primo inizializzato a 0.
Perciò mi aspetto che i valori consentiti siano nel range 0-19, invece, a seguito di una chiamata di inizializzazione che mi setta la struttura, ci trovo dentro un 23 che non è associabile a nessun campo.

Come è possibile?
In C/C++ una enum consente solo di specificare un elenco di costanti il cui tipo è semplicemente un "intero". Essendo un intero a tutti gli effetti, ad una variabile di tipo enum si può assegnare teoricamente qualunque valore intero.

Per essere più chiari:

codice:
enum prova
{
    ZERO = 0,
    UNO,
    DUE
};

enum prova p1 = 4;
è perfettamente lecito.

Nel tuo caso, vuol solo dire che l'elenco nella enum non contempla quel valore 23 (probabilmente perché l'elenco non è aggiornato o per altri motivi).