lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:4323回复:27

swich可以嵌套使用吗

楼主#
更多 发布于:2005-02-22 11:49
我要在键盘处理程序中使用swith/case语句而且想嵌套。也就是说:
我要在中断服务中处理键盘,有几个功能键,用swith/case 处理。
而进入每个第一层的case后,又需要读子功能键完成子功能,子功能处理程序也需要读键多次(如数字键)设定完成后按enter键保存退出。


可以吗?
l=z=l 我听说,灌水是使分数快速增长的有效方法
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-22 12:09
结构如图
附件名称/大小 下载次数 最后更新
2005-02-22_switch.doc (27KB)  16
l=z=l 我听说,灌水是使分数快速增长的有效方法
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-22 13:12
绝对可以。
[b]万水千山总是情,回个帖子行不行?[/b]
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-22 13:30
那是不是还向单层switch/case 一样对应处用break跳出?
l=z=l 我听说,灌水是使分数快速增长的有效方法
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-22 16:29
是的~
crying_p
驱动牛犊
驱动牛犊
  • 注册日期2005-02-25
  • 最后登录2005-11-19
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-28 10:25
绝对可以。

可以是可以,但楼主的程序中出现这种情况,说明程序的结构不是很清晰呀,应该适当的优化程序,避免这种类型的钳套出现,因为这种程序可读性差,而且容易出错,估计编译后生成的代码量也不小哦。 :mad:
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-28 15:21
最好另写函数处理
A strong man can save himself. A great man can save another.
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-02-28 20:21
最好另写函数处理


那,像我这种程序结构该如何编写那。我快头疼死了!
l=z=l 我听说,灌水是使分数快速增长的有效方法
hanwl
驱动牛犊
驱动牛犊
  • 注册日期2005-01-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-01 08:28
typedef struct
{unsigned char KeySateIndex;//当前索引号
 unsigned char KeyDnState;//按下”A“键时转向的状态索引号
 unsigned char KeyUpState;//按下”B“键时转向的状态索引号
 unsigned char KeyReState;//按下”C“键时转向的状态索引号
 unsigned char KeyCrState;//按下”D“键时转向的状态索引号
 void (*CurrentOperate)();//当前状态应该执行的功能操作
}KbdTabStruct;
KbdTabStruct code KeyTab[SIZE_OF_KEYBD_MENU]=
{
  {0,100,100,100,100,(*Run0)},  
  {1,2,3,0,4,(*Run1)},
  {2,3,1,0,5,(*Run2)},
  {3,1,2,0,6,(*Run3)},  
  {4,8,8,1,9,(*Run4)},
  {5,10,11,2,12,(*Run5)}
}

void KeyFunc(void)
{
 switch(KeyValue)
 {
  
  case 10://向下键A,找出新的菜单编号
  {number=0;
  if(KeyTab[KeyFuncIndex].KeyUpState!=100)
  KeyFuncIndex=KeyTab[KeyFuncIndex].KeyUpState;          
  break;
  }
  case 11://向上键B,找出新的菜单编号
  {number=0;
  if(KeyTab[KeyFuncIndex].KeyDnState!=100)
  KeyFuncIndex=KeyTab[KeyFuncIndex].KeyDnState;
  break;
  }
  case 12://取消键C,找出新的菜单编号
  {number=0;
  CLR=1;
  INTC=1;
  if(KeyTab[KeyFuncIndex].KeyReState!=100)
  KeyFuncIndex=KeyTab[KeyFuncIndex].KeyReState;
  break;
  }
}

把每级菜单的功能都由索引号结尾的run*编出来,每级菜单的上下级都编在结构体里,清晰
学习,学习,在学习
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-01 09:45
很好,我要向你学习!
l=z=l 我听说,灌水是使分数快速增长的有效方法
huozee
驱动巨牛
驱动巨牛
  • 注册日期2004-11-09
  • 最后登录2011-08-11
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望166点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-03 14:43
我要在键盘处理程序中使用swith/case语句而且想嵌套。也就是说:
我要在中断服务中处理键盘,有几个功能键,用swith/case 处理。
而进入每个第一层的case后,又需要读子功能键完成子功能,子功能处理程序也需要读键多次(如数字键)设定完成后按enter键保存退出。


可以吗?


结构太滥。。。

aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2005-03-03 15:07
[quote]我要在键盘处理程序中使用swith/case语句而且想嵌套。也就是说:
我要在中断服务中处理键盘,有几个功能键,用swith/case 处理。
而进入每个第一层的case后,又需要读子功能键完成子功能,子功能处理程序也需要读键多次(如数字键)设定完成后按enter键保存退出。


可以吗?


结构太滥。。。

 [/quote]

啥结构跟哈那。。。。。呵呵。。 :D
酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
huozee
驱动巨牛
驱动巨牛
  • 注册日期2004-11-09
  • 最后登录2011-08-11
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望166点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-03-03 16:06
按键只改变菜单编号,其他的什么都不做

执行命令靠菜单编号来case :D
lsn_061
驱动老牛
驱动老牛
  • 注册日期2002-05-09
  • 最后登录2006-10-06
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望261点
  • 贡献值0点
  • 好评度169点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-03-03 16:10
哈....你的case好大哦!
[img]http://bbs.zndev.com/image/medal/5.gif[/img]
huozee
驱动巨牛
驱动巨牛
  • 注册日期2004-11-09
  • 最后登录2011-08-11
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望166点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-03-03 16:32
哈....你的case好大哦!


小程序这么做。。。

大程序 用链表。。。 :D
aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2005-03-03 16:42
[quote]哈....你的case好大哦!


小程序这么做。。。

大程序 用链表。。。 :D [/quote]

嗯,,,行家。。。。 :D
酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
lsn_061
驱动老牛
驱动老牛
  • 注册日期2002-05-09
  • 最后登录2006-10-06
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望261点
  • 贡献值0点
  • 好评度169点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-03-03 16:48
[quote]哈....你的case好大哦!


小程序这么做。。。

大程序 用链表。。。 :D [/quote]

定义n个变量....嵌套 :P
[img]http://bbs.zndev.com/image/medal/5.gif[/img]
huozee
驱动巨牛
驱动巨牛
  • 注册日期2004-11-09
  • 最后登录2011-08-11
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望166点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-03-03 17:07
[quote][quote]哈....你的case好大哦!


小程序这么做。。。

大程序 用链表。。。 :D [/quote]

定义n个变量....嵌套 :P [/quote]

哥哥 离了嵌套你就不会 编了。。。 :D

做成菜单链表。。。

加分隔符和功能码。。。 :D
lsn_061
驱动老牛
驱动老牛
  • 注册日期2002-05-09
  • 最后登录2006-10-06
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望261点
  • 贡献值0点
  • 好评度169点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-03-03 17:13
是呀....俺是汇编....没有链表!遗憾 ...没用过c :P
[img]http://bbs.zndev.com/image/medal/5.gif[/img]
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-03-04 08:26
偶没学过链表,只是看过一点,至于用法,嘿嘿!。。。
l=z=l 我听说,灌水是使分数快速增长的有效方法
上一页
游客

返回顶部