如果我做一個狀態機和要使用的界面是這樣的:當我在狀態1狀態機 - 結構來保持狀態,事件和pFuncs
AddState (state1, state2, Key_UP);
AddEvent (Key_UP);
AddEventFunction (Key_UP, &UP_Function);
AddStateFunction (state1, &State1_In_Function, &State1_Out_Function);
AddStateFunction (state2, &State2_In_Function, &State2_Out_Function);
State1_In_Function (void) { printf ("In #1 \n"); }
State1_Out_Function (void) { printf ("Out #1 \n"); }
State2_In_Function (void) { printf ("In #2 \n"); }
State2_Out_Function (void) { printf ("Out #2 \n"); }
UP_Function (void) { printf ("Goin UP \n"); }
這樣和FSM接收KEY_UP程序打印:
Out #1
Goin UP
In #2
的問題是如何以對國家和過渡信息存儲類內部而不程序員被要求改變的陣列大小。我想我可以使用二維數組,並像往常一樣將其設置爲狀態表,並使其更加便攜,我只需通過使用矢量類型來根據需要調整大小來處理事件和狀態的添加。矢量的問題是,並不是很多嵌入式設備都可以使用內存分配調用。我的第二個選擇是調用狀態機的構造函數,並將它傳遞給表所需的大小,但如果我添加任何新狀態或事件,我需要更改這些值以及...
那麼如何我應該存儲我的狀態,事件和函數指針嗎?!
基於關我已經完成了,做一切我想它一個工作系統由馬蒂厄下面的例子!如果您有興趣查看完整程序[這裏](http://pastebin.com/RtPne3dC),只需執行一個「g ++ file.cpp」即可編譯而不會出現任何錯誤! – uMinded