用C语言实现有限状态机
在C语言中,有好几种方法可以用来表达FSM,但他们绝大多数都是基于函数指针数组 ---- 摘自 《C专家编程》
下面介绍如何使用函数指针数组实现FSM
直接上代码
int add(int a, int b)
{
return (a + b);
}
int sub(int a, int b)
{
return (a - b);
}
struct method
{
char *name;
int (*handler)(int, int);
};
int main()
{
struct method method_t[] = {
{"addName", add},
{"subName", sub}
};
char name[8] = "addName";
for (int i = 0; i < sizeof(method_t) / sizeof(method_t[0]); i++) {
if (!strncmp(name, method_t[i].name, sizeof(name))) {
int sum = (&method_t[i])->handler(2, 3);
printf("%d\n", sum);
}
}
return 0;
}
调用的是add函数,参数为2和3
最后的结果为5