Вы можете использовать побитовое перечисление:
enum myEnum {
typeA = 1 << 0;
typeB = 1 << 1;
typeC = 1 << 2;
}
int myFunction(myEnum arg1)
{
int checkVal = typeA | typeB | typeC;
if (checkVal & arg1)
{
// do work here;
}
else
{
printf("invalid argument!");
}
return 0;
}
Извините, похоже, я неправильно прочитал вопрос.
Похоже, что вы хотите сделать, это определить, передано ли вам правильное значение, а не какой-то случайный неверный параметр. В этом случае наиболее логичный вариант:
if (arg1 < typeA || arg1 > typeC)
printf("invalid argument");
Это, конечно, при условии, что вы не устанавливаете ручные значения для вашего перечисления, что довольно редко, если только не используются побитовые перечисления.