**
enum {
state1
= 0,
state2,
state_num
};
enum {
event1
= 0,
event2,
event_num
};
typedef void (* pFunction)(void* param);
struct FSM
{
pFunction function1;
pFunction function2;
};
void MyFunction1(void* p1)
{
//xxx
};
void MyFunction2(void* p2)
{
//xxx
}
FSM state_machine[state_num][event_num] =
{
{//上一个状态0
{event1,MyFunction1,NULL} ,
{event2,NULL,NULL}
} ,
{//上一个状态1
{event1,MyFunction1,NULL} ,
{event2,NULL,MyFunction2}
}
};
void state_function(int iOldStateNum,int iEventNum)
{
FSM fsm = state_machine[iOldStateNum][iEventNum];
if(NULL != fsm->function1)
{
fsm->function1();
}
}
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源