状态机编程 (三) 层次状态机实现

层次式状态嵌套可以通过从超类继承全部共同的东西,而得到新的行为,可以通过定义和现有状态的不同之处而快速定义新的状态,而不是每次从头开始创建每一个新的状态。

层次式概念图:

需要定义一个函数切换的宏,以进入不同层次的状态机:

typedef void (*SM_FUN) (int, int);
 
#define SUCCESS 0
#define CHANG_SM(fun)  ((SM_FUN)fun, SUCCESS)
 
void sm_fun_level1(int state, int event)
{
    switch(state)
        case level1_state1:
            switch(event)
                case level1_state1_event1:
                    return CHANG_SM(sm_fun_level2);//进入其他层次的状态处理函数
        case level1_state2:
            ......
}
 
 
 
void sm_fun_level2(int state, int event)
{
    switch(state)
        case level2_state1:
            ......
        case level2_state2:
            switch(event)
                case level2_state2_event2:
                    return CHANG_SM(sm_fun_level1);//进入其他层次的状态处理函数
}

————————————————
版权声明:本文为CSDN博主「Chen_Hulk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010034085/article/details/119393153

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值