打印

关于switch...case的级联返回问题!

[复制链接]
1793|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-4-25 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}

相关帖子

沙发
ccjchen|  楼主 | 2007-4-25 22:19 | 只看该作者

下面说的更清楚些,请各位大虾指导!

我用 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;
}

使用特权

评论回复
板凳
汉江之源| | 2010-5-3 11:57 | 只看该作者
我也在纠结,知道了告诉我啊!!

使用特权

评论回复
地板
hgjinwei| | 2010-5-4 12:29 | 只看该作者
传说中的 goto 是很好用的。

使用特权

评论回复
5
db10| | 2010-5-4 17:52 | 只看该作者
你目前的程序:
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;

上面你的程序,程序会执行完第三级后,然后程序执行到第二个break,这个就是第二级的break,相当马上跳出了第二级,所以要这里想办法(出掉这个break,留最后一个break,这个是个办法,但是效率比较低,你可以想想别的办法),可用goto,不过一般实在不行了才用goto,goto一般当程序大了,可读性和运行比较乱,还有一个你可以改造下你的程序。

使用特权

评论回复
6
后学| | 2010-5-5 08:20 | 只看该作者
太多嵌套本身就说明程序结构有问题,

使用特权

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

本版积分规则

175

主题

446

帖子

1

粉丝