1. 程式人生 > 實用技巧 >C語言狀態機程式設計進階

C語言狀態機程式設計進階

狀態機的一般實現

一般的狀態機實現如下,定義幾個不同的狀態,通過switch...case...語句實現不同狀態的執行。

一般小型狀態機使用上述方式實現,該方法的缺點,一是如果系統稍微複雜一些,將需要定義很多狀態,同時增加case的數量。二是swich...case...將變得很複雜臃腫。

狀態機的高階實現

一個新的實現方法是使用函式本身作為執行的狀態和儲存當前的狀態到函式指標。

使用函式名作為狀態,這種方式的迴圈呼叫函式 state_machine_run(void * priv_data)將變得非常簡練,而且能夠保證每時每刻都有一個狀態在執行。