cmd_clear 2020-04-13 08:58 采纳率: 66.7%
浏览 206
已采纳

如何去除switch case,实现不同任务的调用

问题背景:
嵌入式linux,应用
通过串口获得了 形如 命令+参数 的字符串
我是之前是通过switch case进行功能选择的?有没有什么更好的办法统一起来,有些约定的指令需要带参数,有些不需要。

            switch(location)
            {
                case 0:command_getServerIp(); break;
                case 1:command_setServerIp(); break;
                case 2:command_getIpcIP(); break;
                case 3:command_takephoto(); break;
                case 4:command_standby(); break;
                case 5:command_setStandbytime(); break;
                case 6:command_GPIOCTRL(); break;
                default:
                    rdlen = 0;
                    location = -1;
                    memset(recbuffer,0,sizeof(recbuffer));
                    sendmessage("BAD COMMAND!\n");
            }
            memset(recbuffer,0,sizeof(recbuffer));// cleanup
  • 写回答

2条回答 默认 最新

  • threenewbee 2020-04-13 09:28
    关注

    使用函数指针代替location参数,让调用者把要做什么定义成函数传进来。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?