之前写过一篇状态机的实用文章,很多朋友说有几个地方有点难度不易理解,今天给大家换种简单写法,使用函数指针的方法实现状态机。
状态机简介
有限状态机FSM是有限个状态及在这些状态之间的转移和动作等行为的数学模型,是一种逻辑单元内部的高效编程方法,可以根据不同状态或者消息类型进行相应的处理逻辑,使得程序逻辑清晰易懂。
函数指针实现FSM
使用函数指针实现FSM可以分为3个步骤
-
建立相应的状态表和动作查询表
-
根据状态表、事件、动作表定位相应的动作处理函数
-
执行完成后再进行状态的切换
代码实现步骤
-
定义状态数据的枚举类型
复制代码
1
2
3
4
5
6
7typedef enum { state_1=1, state_2, state_3, state_4 }State;
-
定义事件的枚举类型
复制代码
1
2
3
4
5
6
7
8typedef enum{ event_1=1, event_2, event_3, event_4, event_5 }EventID;
-
定义状态表的数据类型
复制代码
1
2
3
4
5
6typedef struct { int event; //事件 int CurState; //当前状态 void (*eventActFun)(); //函数指针 int NextState; //下一个状
最后
以上就是英勇小土豆最近收集整理的关于【编程之美】函数指针方法实现简单状态机(附代码)的全部内容,更多相关【编程之美】函数指针方法实现简单状态机(附代码)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复