如何遍历枚举类型的成员及取到枚举类型成员的个数

victor_cui 2004-12-28 08:43:34
如题!
...全文
848 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigtree21cn 2004-12-31
  • 打赏
  • 举报
回复
枚举应该是不行的 ,不过个数可以用 sizeof(...)判断。
winstonch 2004-12-31
  • 打赏
  • 举报
回复
suyouxin(为什么划船不用浆) 说的也没看明白.
liem 2004-12-31
  • 打赏
  • 举报
回复
这与具体enum有关。我的想法是:根据具体的enum,建立一个next(有)函数用来返回有的下一个。
如:
enum Ex{begin=0,first=1,second=2,third=4,forth=8,end=16};//其中end仅作结束标记,而不作枚举值使用
Ex next(Ex e)
{
switch(e)
{
case begin:return first;
case first:return second;
....
default:return end;
}
}
这样我们可以通过下面的循环来遍历enum
for(Ex e=begin;e!=end;e=next(e))

suyouxin 2004-12-31
  • 打赏
  • 举报
回复
如果数值不是连续的,就只有在外面判断了
typedef struct MY_ENUM{
enumNum = 4;
typedef enum {
TEST_1 = 0x00,
TEST_2 = 0x03,
TEST_3 = 0x05,
TEST_4 = 0x07
}TEST_ENUM
}MY_ENUM
suyouxin 2004-12-31
  • 打赏
  • 举报
回复
如果数值不是连续的,就只有在外面判断了
struct MY_ENUM{

typedef enum {
TEST_1 = 0x00,
TEST_2 = 0x03,
TEST_3 = 0x05,
TEST_4 = 0x07
}TEST_ENUM
suyouxin 2004-12-31
  • 打赏
  • 举报
回复
typedef enum {
TEST_1 = 0x00,
TEST_2,
TEST_3,
TEST_4,
TEST_MAX_NUM
}TEST_ENUM
TEST_MAX_NUM = 4 就是enum的个数了,
遍历就不清楚了,如果你要遍历的话最好就不要用enum了


winstonch 2004-12-31
  • 打赏
  • 举报
回复
avalonBBS( ̄(o o) ̄) :没明白?能否举个例子?谢谢
avalonBBS 2004-12-31
  • 打赏
  • 举报
回复
enum成员个数可以在外面套一个结构,内直接用一成员来表示其enum成员的个数
至于遍历~~~~~偶想不出来ing~~~~~~~~
winstonch 2004-12-31
  • 打赏
  • 举报
回复
怎么没有办法了?
victor_cui 2004-12-31
  • 打赏
  • 举报
回复
看来是没有办法了
CMyMfc 2004-12-31
  • 打赏
  • 举报
回复
枚举初衷是起个标识符的意义, 遍历它, 就失去它的意义了
0011411 2004-12-31
  • 打赏
  • 举报
回复
to : victor_cui (夕阳)
如何遍历枚举类型的成员及取到枚举类型成员的个数

-------------------------------------------------------------
这个问题其实很简单,只要你定义一个指向枚举的指针,通过指针的++或--可以实现此功能!不过要小心指针,指针用的不正确,就会出错!
willko 2004-12-31
  • 打赏
  • 举报
回复
好像没意义。数下不就知道了。!
CMyMfc 2004-12-31
  • 打赏
  • 举报
回复
搞不懂, 楼主这样做为了什么
winstonch 2004-12-28
  • 打赏
  • 举报
回复
如果用过lex和yacc的话用它们最方便,因为枚举可以这样写enum {e = 1+2+2...};自己分析起来挺麻烦,而且容易出错
dean7411 2004-12-28
  • 打赏
  • 举报
回复
不懂
xuelong_zl 2004-12-28
  • 打赏
  • 举报
回复
不明白,帮你up一下吧

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧