Mam ENUM:Jak sprawdzić, czy zmienna wyliczeniowa jest ważna?
enum myenum{
typeA,
typeB,
typeC
} myenum_t;
Następnie funkcje ma być wywołana z parametrem ENUM:
int myfunction(myenum_t param1)
{
switch(param1)
{
case typeA:
case typeB:
case typeC:
//do the work
break;
default:
printf("Invalid parameter");
}
return 0;
}
Ale, jak myenum_t
rośnie wraz z coraz większej wartości, nie wydaje myfunction
taki elegancki.
Czy istnieje lepszy sposób sprawdzenia, czy wyliczenie jest poprawne, czy nie?
Nie mając kopię standardzie, bym się oszukany przez mówiąc to bez cytowania, więc zrobię to komentarz: W każda implementacja C lub C++ widziałem, wartości 'enum' są przydzielane w rosnącej kolejności numerycznej. Więc wszystko, co musisz zrobić, to dodać 'firstEnum = typeA, lastEnum = typeC' do twojego' enum', a następnie sprawdzić zakres z 'if (int (inputEnum) int (lastEnum)) {/ * błąd obsługi * /} '. –