找回密码
 注册
搜索
查看: 685|回复: 7

[讨论] 哪位高手能不能帮忙解决一个编程问题?

[复制链接]
发表于 2007-9-19 13:50:08 | 显示全部楼层 |阅读模式
void putmenu(char *menu)     
{
   gputs(menu);
  if(menu==nivel_1[0].nombre[1])
  {
   ……
          }
  else if(menu==nivel_1[1].nombre[1])
  {
    ……
         }
   else if(menu==nivel_1[2].nombre[1])
  {
    ……
         }
                   。
                   。
                   。
else  ;
                          }
问题是这样的,这个函数else if 语句如果不是太多,能够正常工作。但由于我要判别的比较多,要达到目的,写的程序有很多else if大概有40条之多),问题就出在else if 不能太多,也就是不能进行过多的次的判别。请问一下各位大虾,到底是什么原因呀,有什么方法解决此问题呢?小弟感激不尽!
 楼主| 发表于 2007-9-19 13:54:31 | 显示全部楼层
我用的编译器是IAR EW for 8051
点评回复

使用道具 举报

发表于 2007-9-19 16:25:29 | 显示全部楼层
为什么 不用switch....case函数?
点评回复

使用道具 举报

 楼主| 发表于 2007-9-19 17:06:17 | 显示全部楼层
case 后面必须得是常数才行吧? 也就是:
switch(变量)
{case常量:  ...... ;
case 常量:  ...... ;
            。
            。
            。}
我这种情况好象不符合吧?
点评回复

使用道具 举报

发表于 2007-9-19 17:09:10 | 显示全部楼层
用到的menu分配个常量不就OK啦
点评回复

使用道具 举报

 楼主| 发表于 2007-9-20 12:25:51 | 显示全部楼层
问题已经解决,谢谢拉!
点评回复

使用道具 举报

发表于 2007-9-23 00:25:46 | 显示全部楼层
查找林锐的c/c++那本书,里面就讲了这个情况的例子,好像那个例子比你的else if还要多
点评回复

使用道具 举报

发表于 2007-10-12 14:55:44 | 显示全部楼层
建议你用case语句
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-7 09:27 , Processed in 0.047467 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表