Ho un enum:Come verificare se una variabile enum è valida?
enum myenum{
typeA,
typeB,
typeC
} myenum_t;
Poi, funzioni deve essere chiamato con un parametro enum:
int myfunction(myenum_t param1)
{
switch(param1)
{
case typeA:
case typeB:
case typeC:
//do the work
break;
default:
printf("Invalid parameter");
}
return 0;
}
Ma, come myenum_t
cresce con sempre più valori, myfunction
non sembra così elegante.
C'è un modo migliore per verificare se un enum è valido o no?
Non avendo una copia dello standard, mi sarei strappato per dire questo senza citare, in modo ce la farò un commento: In Ogni implementazione C o C++ che ho visto, i valori di 'enum' sono assegnati in ordine numerico crescente. Quindi tutto ciò che devi fare è aggiungere 'firstEnum = typeA, lastEnum = typeC' al tuo' enum' e quindi range control con 'if (int (inputEnum) int (lastEnum)) {/ * gestisce l'errore * /} '. –