我是靠谱客的博主 英勇小土豆,这篇文章主要介绍【编程之美】函数指针方法实现简单状态机(附代码),现在分享给大家,希望可以做个参考。

之前写过一篇状态机的实用文章,很多朋友说有几个地方有点难度不易理解,今天给大家换种简单写法,使用函数指针的方法实现状态机。

状态机简介

有限状态机FSM是有限个状态及在这些状态之间的转移和动作等行为的数学模型,是一种逻辑单元内部的高效编程方法,可以根据不同状态或者消息类型进行相应的处理逻辑,使得程序逻辑清晰易懂。

函数指针实现FSM

使用函数指针实现FSM可以分为3个步骤

  1. 建立相应的状态表和动作查询表

  2. 根据状态表、事件、动作表定位相应的动作处理函数

  3. 执行完成后再进行状态的切换

代码实现步骤

  1. 定义状态数据的枚举类型

复制代码
1
2
3
4
5
6
7
typedef enum {   state_1=1,   state_2,   state_3,   state_4 }State;
  1. 定义事件的枚举类型

复制代码
1
2
3
4
5
6
7
8
typedef enum{   event_1=1,   event_2,   event_3,   event_4,   event_5 }EventID;
  1. 定义状态表的数据类型

复制代码
1
2
3
4
5
6
typedef struct {     int event;   //事件     int CurState;  //当前状态     void (*eventActFun)();  //函数指针     int NextState;  //下一个状

最后

以上就是英勇小土豆最近收集整理的关于【编程之美】函数指针方法实现简单状态机(附代码)的全部内容,更多相关【编程之美】函数指针方法实现简单状态机(附代码)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(152)

评论列表共有 0 条评论

立即
投稿
返回
顶部