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

概述

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

状态机简介

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

函数指针实现FSM

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

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

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

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

代码实现步骤

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

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

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

typedef struct
{
    int event;   //事件
    int CurState;  //当前状态
    void (*eventActFun)();  //函数指针
    int NextState;  //下一个状

最后

以上就是英勇小土豆为你收集整理的【编程之美】函数指针方法实现简单状态机(附代码)的全部内容,希望文章能够帮你解决【编程之美】函数指针方法实现简单状态机(附代码)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部