Я признаю, что эта статья была для меня немного дремучей. Но я скажу, что один из самых простых и изящных способов создания конечных автоматов в C, который я видел, - это этот пост
Вот фрагмент
#define FSM
#define STATE(x) s_##x :
#define NEXTSTATE(x) goto s_##x
FSM {
STATE(x) {
...
NEXTSTATE(y);
}
STATE(y) {
...
if (x == 0)
NEXTSTATE(y);
else
NEXTSTATE(x);
}
}
Некоторые люди могут отказаться от использования goto
при любых обстоятельствах, но я думаю, что это одна из реализаций, которая действительно использует ее довольно красиво.
Итак, чтобы ответить на ваш вопрос, да, я не только считаю, что указатели функций могут быть излишними для FSM, но и имеет тенденцию запутывать код.