小言_互联网的博客

【编程之美】函数指针方法实现简单状态机(附代码)

387人阅读  评论(0)

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

状态机简介

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

函数指针实现FSM

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

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

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

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

代码实现步骤

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


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


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


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

转载:https://blog.csdn.net/u012846795/article/details/109089158
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场