为什么要写这篇
这是在写二级状态机相关的代码时遇到的问题,两种实现方式可选,最终我选择了使用指针数组的方式
如何根据当前的状态和发生的事件 在对应的状态表(结构体数组)里查找对应的状态信息(结构体),我看到的公众号文章里是这样处理的
/* 查找状态表 */
StateInfo *find_state_table(StateMachine *pSM, Event evt)
{
StateInfo *temp = NULL;
if(pSM == NULL)
{
return NULL;
}
switch (pSM->currentState)
{
case sta_origin:
*temp = STATETRANS(0)[evt];
break;
case sta_running:
*temp = STATETRANS(1)[evt];
break;
case sta_owencpu:
*temp = STATETRANS(2