I was reading http://www.netrino.com/Embedded-Systems/How-To/State-Machines-Event-Driven-Systems later in the article they provide implementation of the small FSM in C language.
I don't quite understand why they chose function pointers. In my understanding pointers to functions are useful when one needs the same interface, but for different types of "events", for example parsing some Internet protocol packet (it's convenient to register one pointer to function and assign to it different functions, one to parse HTTP, second to parse FTP and so on. This is merely an example, but I think you got my point).
But this is not what I see in the article, IMHO for the state machine astraightforward implementation would suffice, or may be I'm wrong?