我们需要在 C中实现一个简单的状态机。
标准 switch 语句是最好的方法吗?
我们有一个当前状态(state)和一个转换触发器。
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 + + ,我认为 Boost 状态图库可能是解决方案。但是,没有对 C 有帮助,让我们集中在 C 用例上。