#include <stdio.h>
// 定义状态枚举
typedef enum {
STATE_A,
STATE_B,
STATE_C
} State;
// 定义状态结构体,包含状态名称和切换状态的函数指针
typedef struct {
State state;
void (*switchState)(State*);
} StateMachine;
// 状态切换函数
void switchToB(State* state) {
printf("Switching to State B\n");
state->state = STATE_B;
}
void switchToC(State* state) {
printf("Switching to State C\n");
state->state = STATE_C;
}
void switchToA(State* state) {
printf("Switching to State A\n");
state->state = STATE_A;
}
// 初始化状态机
void initStateMachine(StateMachine* sm, State initialState) {
sm->state = initialState;
switch (initialState) {
case STATE_A:
sm->switchState = switchToB;
break;
case STATE_B:
sm->switchState = switchToC;
break;
case STATE_C:
sm->switchState = switchToA;
break;
}
}
// 状态机切换状态
void stateMachineSwitch(StateMachine* sm) {
sm->switchState(&sm->state);
}
int main() {
StateMachine sm;
initStateMachine(&sm, STATE_A); // 初始状态为A
// 模拟状态切换
stateMachineSwitch(&sm); // 切换到B
stateMachineSwitch(&sm); // 切换到C
stateMachineSwitch(&sm); // 切换回A
stateMachineSwitch(&sm); // 再次切换到B
return 0;
}