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

[复制链接]
 楼主| 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 是很好用的。
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一般当程序大了,可读性和运行比较乱,还有一个你可以改造下你的程序。
后学 发表于 2010-5-5 08:20 | 显示全部楼层
太多嵌套本身就说明程序结构有问题,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

175

主题

446

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部