Cで単純なステートマシンを実装する必要があります。
標準のswitchステートメントが最善の方法ですか?
現在の状態(状態)と遷移のトリガーがあります。
switch(state)
{
case STATE_1:
state = DoState1(transition);
break;
case STATE_2:
state = DoState2(transition);
break;
}
...
DoState2(int transition)
{
// Do State Work
...
if(transition == FROM_STATE_2) {
// New state when doing STATE 2 -> STATE 2
}
if(transition == FROM_STATE_1) {
// New State when moving STATE 1 -> STATE 2
}
return new_state;
}
単純なステートマシンのためのより良い方法はありますか
編集:C ++の場合、 BoostStatechartライブラリが最適な方法だと思います。ただし、Cには役立ちません。Cのユースケースに集中しましょう。