Método dinámico de despacho en C

Sé que suena tonto y sé que C no es un lenguaje orientado a objetos.

Pero, ¿hay alguna manera de que el envío de métodos dinámicos se pueda lograr en C? Pensé en punteros de función, pero no entiendo la idea completa.

¿Cómo podría implementar esto?