C 多重嵌套 if 是否有简单处理方法

2020-01-15 19:24发布

本帖最后由 ajfan 于 2017-7-8 18:23 编辑

请教大牛关于C编程思路的

通过uart 接收到的6位字符串(前5位用于功能定义,第6位为参数,非固定),不同的组合定义了不同的指向功能,用普通的if 语句 先判断第一位,然后在判断语句里再嵌套5个if 确定最终的字符串(然后根据这个字符串指向对应的功能模块,第6位作为参数也一起送过去),问题来了,除了5重嵌套 if 语句外,是否有其他的方式可以进行优化的指向?用switch并将所有的组合放在case里将会有32 个选项,不怎么想用。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
Excellence
1楼-- · 2020-01-16 22:23
协议,帧头,命令字,
chunjiu
2楼-- · 2020-01-17 01:40
查表!将所有的组合变成一个表和对应的跳转地址,再用 memcmp 函数检查接收指令(根据需要指定长度),然后跳转 ...
jiangxingyuan
3楼-- · 2020-01-17 04:05
 精彩回答 2  元偷偷看……
ztrx
4楼-- · 2020-01-17 07:40
jiangxingyuan 发表于 2017-7-9 09:32
指针函数数组,
void (*fun[][][][])()={
                                  f1,

效率咋样            
1a2b3c
5楼-- · 2020-01-17 09:21
很多时候是c代码简洁,但是单片机效率不高,
jiangxingyuan
6楼-- · 2020-01-17 10:49
ztrx 发表于 2017-7-9 09:43
效率咋样

没有实际测试过。本质就是收到数据,查出跳转地址,通过跳转地址跳到函数入口。如果资源不是很紧张的时候不必太在乎效率,毕境资源你不用,也是浪费了。关键是维护性要好点。太多的分支嵌套,代码长度,缩进,对日后维护不方便。

一周热门 更多>