【发布时间】:2012-02-06 14:44:12
【问题描述】:
我有一个枚举:
enum myenum{
typeA,
typeB,
typeC
} myenum_t;
然后,将使用枚举参数调用函数:
int myfunction(myenum_t param1)
{
switch(param1)
{
case typeA:
case typeB:
case typeC:
//do the work
break;
default:
printf("Invalid parameter");
}
return 0;
}
但是,随着myenum_t 的值越来越多,myfunction 似乎并不那么优雅了。
有没有更好的方法来检查枚举是否有效?
【问题讨论】:
-
没有标准的副本,如果没有引用它,我会因为这样说而被撕毁,所以我会发表评论:在我见过的每个 C 或 C++ 实现中,
enum值以递增的数字顺序分配。所以您需要做的就是将firstEnum = typeA, lastEnum = typeC添加到您的enum,然后使用if(int(inputEnum) < int(firstEnum) || int(inputEnum) > int(lastEnum)) { /* handle error */ }进行范围检查。