如何去除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

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

你的意思是要对不同的数据用不同的方法处理,但是每个数据的参数个数不一样对吧
你可以学习windows的方法

set(
    int cmd,
    unsigned int* wParam,
   unsigned int* lParam);

需要的传参数,不需要的传NULL