打印

关于switch...case的级联返回问题!请各位大虾指导!

[复制链接]
3046|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-4-25 21:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
switch (keyin())
 {
 case 24:
         SendCMD(0x00);
         delay(100);
         put_str(0,0x80,chen[8],8);
         put_str(0,0x88,chen[9],8);
          switch (keyin())
             {
          case 25:
              //在这里返回到第二级应该怎么写呢?
          default:
             break;
            }
              break;
case 25:
         SendCMD(0x00);
         delay(100);
         put_str(0,0x80,chen[10],8);
         put_str(0,0x88,chen[11],8);
         break;
default:
         break;
}

相关帖子

沙发
平常人| | 2007-4-25 21:21 | 只看该作者

第二级在哪里呀?用break不行吗?

使用特权

评论回复
板凳
ccjchen|  楼主 | 2007-4-25 22:16 | 只看该作者

下面说的清楚些,用break?

我用 switch...case 做 lcd 的级联菜单,当如果我在第三级菜单返回到第二级应该怎么办呢?(我的程序在上面,其中第一级省略了)
switch (keyin())//第二级
 {
 case 24:
         SendCMD(0x00);
         delay(100);
         put_str(0,0x80,chen[8],8);
         put_str(0,0x88,chen[9],8);
          switch (keyin())//第三级
             {
          case 25:
              //在这里返回到第二级应该怎么写呢?
          default:
             break;
            }
              break;
case 25:
         SendCMD(0x00);
         delay(100);
         put_str(0,0x80,chen[10],8);
         put_str(0,0x88,chen[11],8);
         break;
default:
         break;
}

使用特权

评论回复
地板
平常人| | 2007-4-25 22:30 | 只看该作者

还是没搞清楚你要返回哪里

在内层的case 25转到外层的case 25,还是转到外层的switch,还是跳出外层的switch?

switch...case即不是循环语句,也不是goto语句,除了继续向下执行,不可以返回或转向到任何地方。

况且,“返回”只可能用于子程序“返回”调用它的上一层主程序,其他地方都不能用“返回”这个说法。

使用特权

评论回复
5
jxc827| | 2007-4-25 22:30 | 只看该作者

return 是不是可以?

使用特权

评论回复
6
dengm| | 2007-4-25 22:48 | 只看该作者

这里用goto 比较好

使用特权

评论回复
7
hiberhe| | 2007-4-25 23:19 | 只看该作者

一般我觉得不要这么写为好

我极不喜欢switch嵌套,这样还不如搞个函数来得直观!

使用特权

评论回复
8
xwj| | 2007-4-25 23:35 | 只看该作者

你这样写的话用goto比较好,但有不用goto的写法

那就是记录在哪一层,同一键分层处理

使用特权

评论回复
9
ccjchen|  楼主 | 2007-4-26 08:01 | 只看该作者

就是lcd多级菜单如何退回上一级,用goto语句如何实现呢?

大哥帮写一两句让我看看好吗?

使用特权

评论回复
10
平常人| | 2007-4-26 08:12 | 只看该作者

实现多级菜单最好用状态机,每个菜单的每个选项对应一个

列出所有菜单、所有选项,画出完整的状态机,并画出每个状态的转换关系和转换条件,做好这些功课之后再写程序,所有事情就变得顺其自然了。

使用特权

评论回复
11
luhuaren| | 2007-4-26 17:30 | 只看该作者

re

switch (keyin())//第二级
{
case 24:
         SendCMD(0x00);
         delay(100);
         put_str(0,0x80,chen[8],8);
         put_str(0,0x88,chen[9],8);
          switch (keyin())//第三级
             {
          case 25:
              //在这里返回到第二级应该怎么写呢?
          default:
             break;
            }
              break;
case 25:
         SendCMD(0x00);
         delay(100);
         put_str(0,0x80,chen[10],8);
         put_str(0,0x88,chen[11],8);
         break;
default:
         break;

思路有问题!菜单不是象你这样编的,
switch(menu_status)
{
    case 24:
       switch(keyin())
       {
           case 0:
               menu_status = xxx;
               break;
           case 1:
               menu_status = xxx;
               break;
           default:
               break;
       }
       break;
    case 25:
       break;
}

使用特权

评论回复
12
ccjchen|  楼主 | 2007-4-26 19:50 | 只看该作者

我这里的意思是同一按键在两级中使用

使用特权

评论回复
13
ccjchen|  楼主 | 2007-4-26 23:03 | 只看该作者

11楼这位大哥写的我看不懂啊,能否给解释一下?

使用特权

评论回复
14
yuanjian79| | 2007-4-26 23:10 | 只看该作者

break仅仅是跳出属于它的一个switch。

break仅仅是跳出属于它的一个switch。别把概念搞混淆了。和菜单的级没什么关系。

使用特权

评论回复
15
biao.l| | 2007-4-27 18:24 | 只看该作者

我都认为搞下级菜单弄成函数比较好

我都认为搞下级菜单弄成函数比较好,你这样嵌套,不直观

使用特权

评论回复
16
ccjchen|  楼主 | 2007-4-28 08:03 | 只看该作者

楼上的哪位大哥能否把写过的程序发给我一份呢?

我的油箱ccjchen2005@126.com,万分感谢!

使用特权

评论回复
17
hebeijiang| | 2007-4-28 08:14 | 只看该作者

建议改变方案,多级菜单可以考虑用指针来做,类似堆栈。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝