构建 设置- 命令库——让命令调用更简单
来源:互联网 发布:新概念英语网络课程 编辑:程序博客网 时间:2024/06/10 12:26
在写C代码的时候,经常遇到根据某个命令然后执行某个函数,(命令和设置一对一),当命令和设置比较少时我们可以使用 if - else if - else 。。。没毛病!
例如:
if (strncmp(msg_mcp.dat_buf, "SET-XXX-NET", 11) == 0) { cmd_set_net(); } else if (strncmp(msg_mcp.dat_buf, "SET-XXX-MOD", 11) == 0) { cmd_set_mod(); } else if (strncmp(msg_mcp.dat_buf, "SET-XXX-STA", 11) == 0) { cmd_set_sta(); }
但是如果命令/函数一旦特别多(超过6、7个),这个if - else if - else就显得很low了;这个时候就要采用一种巧妙的方式 - 构建 设置-命令库 来处理;
例如:
#define Set_Head 12 //命令最长12个byte#define CMD_SET_MAX_NUMBER 6 //最多有6条命令//设置-命令库的类型定义typedef struct{ unsigned char cmd[Set_Head]; int (*cmd_fun)(); //这个函数的定义根据需要改变}SET_CMD_FUN;//命令函数的声明(定义)int cmd_set_lev(void);int cmd_set_typ(void);int cmd_set_mod(void);int cmd_set_prr(void);。。。//构建一个设置-命令库,让它们一一对应SET_CMD_FUN set_cmd_fun[CMD_SET_MAX_NUMBER] = { {"SET-OUT-NET:", cmd_set_lev}, {"SET-OUT-MOD:", cmd_set_typ}, {"SET-OUT-STA:", cmd_set_mod}, {"SET-OUT-PRR:", cmd_set_prr}, 。。。 };//利用for循环来查询/调用这个设置-命令库for(i = 0; i < CMD_SET_MAX_NUMBER; i++){ if(strncmp((const char *)set_cmd_fun[i].cmd,\ (const char *)set_cmd.cmd, Set_Head) == 0) { set_cmd_fun[i].cmd_fun(); break; }}
阅读全文
0 0
- 构建 设置- 命令库——让命令调用更简单
- Console命令,让js调试更简单
- 设置命令的别名,让 Linux 命令更简练
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- 【简单命令让XP系统运行更快】
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- Console命令详解,让调试js代码变得更简单
- es6的Promise及es7的Async/Await应用
- 20个高大上的linux命令
- Gray-Level Groupinig(GLG) 论文阅读与实现
- sqlserver 批量处理
- laravel CURD
- 构建 设置- 命令库——让命令调用更简单
- Android如何高效的加载图片(2)---在ui线程中处理Bitmaps
- android_系统广播大全
- html文件如何加载iOS本地图片
- 使用冒泡排序法
- 按键驱动-RK3128
- Matlab中size函数的用法
- ViewPager的预加载:setOffscreenPageLimit(int limit)
- Lua 打乱数组顺序