星空有烂,观之忘我
定义状态机
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();
}
}
原创文章,转载请注明出自瀚海星空.
本文链接地址:http://abloz.com/2005/07/18/e5-ae-9a-e4-b9-89-e7-8a-b6-e6-80-81-e6-9c-ba.html
| 打印文章 | 这篇文章由梦想家于2005年07月18日 06:26发表在计算机。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |