¿Existe un patrón de implementación de máquina de estado típico?

Necesitamos implementar una máquina de estados simple en C . ¿Es una declaración de cambio estándar la mejor manera de hacerlo? Tenemos un estado actual (estado) y un disparador para la transición. switch(state) { case STATE_1: state = DoState1(transition); break; case STATE_2: state =...