Les machines d'état en C

Quelle est la meilleure façon d'écrire une machine d'état dans C?
J'ai l'habitude d'écrire une instruction de cas switch dans un for(;;), avec des rappels à ré-entrer dans l'état de la machine lorsqu'une opération est terminée.
Connaissez-vous un moyen plus efficace?

Cela semble assez standard approche de mise en œuvre.
Hey! Qui sonne comme ce que je fais. Le monde est petit.
Hey! Vous avez volé mon code et l'a copié!
Voir ma réponse à stackoverflow.com/questions/1371460/state-machines-tutorials - je pense que la table-driven approche est plus efficace (code de la maintenance et de la lisibilité de point de vue) que l'un big switch
J'ai aussi posté quelques macro-magie ici: stackoverflow.com/questions/1647631/c-state-machine-design/...

OriginalL'auteur Maurizio Reginelli | 2010-02-16