Нам нужно реализовать простой конечный автомат в 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;
}
Есть ли лучший способ для простых состояний машин
EDIT: Для С++ я думаю, что библиотека Boost Statechart может быть способом. Тем не менее, он помогает не с C. Давайте сосредоточимся на случае использования C.