Я читал http://www.netrino.com/Embedded-Systems/How-To/State-Machines-Event-Driven-Systems далее в этой статье они предоставляют реализацию небольшого конечного автомата на языке C.
Не совсем понимаю, почему они выбрали указатели на функции. Насколько я понимаю, указатели на функции полезны, когда нужен один и тот же интерфейс, но для разных типов «событий», например, для анализа некоторого пакета интернет-протокола (удобно зарегистрировать один указатель на функцию и назначить ему разные функции, один для анализа HTTP, второй для анализа FTP и т. Д. Это всего лишь пример, но я думаю, вы поняли мою мысль).
Но это не то, что я вижу в статье, ИМХО для конечного автомата хватило бы прямой реализации, или может я ошибаюсь?