状态机编程 (二) 标准状态机实现

本文探讨了状态机的常见实现方式,包括使用嵌套的switch语句和数组查表。通过枚举状态和事件,阐述了两种方法的优缺点。嵌套switch虽然直观,但可能导致代码冗长且不易复用。而数组查表实现则更灵活,通过二维函数指针数组根据当前状态和事件调用相应处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

状态机的典型实现方法:

  • 嵌套的switch语句
  • 状态表
  • 面向对象的状态设计模式

枚举状态和事件

将状态和事件进行枚举:

enum sm_state
{
    state1,
    state2,
    state3
}
enum sm_event
{
    event1,
    event2,
    event3
}

 

嵌套的switch语句实现状态机

嵌套的switch可以用一维状态表来表现:

当前状态 事件 监护条件 下一状态 动作
state1 event1 check是否符合规则 event2 action1
event2 check是否符合规则 event3 action2
event3 check是否符合规则 event4 action3
state2 event1 check是否符合规则 event5 action4
event2 check是否符合规则 event6 action5
event3 check是否符合规则 eve
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值