使用C++ 实现状态机
时间: 2024-05-11 21:15:49 浏览: 69
C语言实现的状态机
5星 · 资源好评率100%
可以用 switch-case 语句实现状态机。具体实现方法是,根据当前的状态,在 switch 语句中判断当前的输入信号,根据输入信号和当前状态,转移状态,并执行相应的操作。例如:
```
enum State {
STATE_IDLE,
STATE_RUNNING,
STATE_STOPPED,
};
void state_machine(enum State state, int input) {
switch (state) {
case STATE_IDLE:
if (input == 1) {
// transition to STATE_RUNNING
state = STATE_RUNNING;
// do something
}
break;
case STATE_RUNNING:
if (input == 0) {
// transition to STATE_STOPPED
state = STATE_STOPPED;
// do something
}
break;
case STATE_STOPPED:
if (input == 1) {
// transition to STATE_RUNNING
state = STATE_RUNNING;
// do something
}
break;
}
}
```
在这个例子中,我们定义了三个状态 STATE_IDLE、STATE_RUNNING 和 STATE_STOPPED。根据当前状态和输入信号,我们在 switch 语句中转移状态,并执行相应的操作。当输入信号为 1 时,表示开始运行,如果当前状态是 STATE_IDLE,就转移到 STATE_RUNNING 状态,并执行相应的操作;当输入信号为 0 时,表示停止运行,如果当前状态是 STATE_RUNNING,就转移到 STATE_STOPPED 状态,并执行相应的操作;当输入信号为 1 时,表示重新开始运行,如果当前状态是 STATE_STOPPED,就转移到 STATE_RUNNING 状态,并执行相应的操作。
阅读全文