Estás rompiendo un par de cosas haciendo esto que puede o no importar.
Primero, la capacidad de los enlazadores para descartar funciones no utilizadas desaparece porque se toma la dirección de todas las funciones, incluso si no se las llama, esto puede o no ser importante para usted (depende de lo ajustado que esté para el espacio de código).
En segundo lugar, está rompiendo cualquier tipo de optimización entre procedimientos, de nuevo puede o no ser importante para usted.
En tercer lugar, está agregando indirección adicional, lo que, aparte del costo de la memoria adicional, puede o no hacer cosas desafortunadas al caché.
Por último, al agregar estos punteros a cada estructura, las estructuras son potencialmente un poco más grandes, por lo general, es mejor tener una sola copia de una estructura auxiliar para cada tipo y luego tener un solo puntero de cada instancia para apuntar al 'vtable'. Lo más importante es que tu caché es limitado y, al menos en cierta medida, también lo es tu ariete.
Para mí, la gran ruptura es que las herramientas automáticas de extracción de documentación ya no pueden crear fácilmente llamadas / llamadas mediante gráficos, lo que puede ser una molestia cuando se trata de bases de código de otras personas. Preferiría que prefieras la estructura de nombres de funciones específicas con Algo razonable entonces hacer este tipo de indirección.
Hay un tiempo y un lugar para este estilo, las pilas de IP saltan a la mente inexorablemente por alguna razón.
Una mejora sugerida si va a hacer esto, convierta el primer argumento de cada función en un puntero a la estructura en cuestión, de esa manera el código de la función puede acceder fácilmente a los datos de la estructura.
C ++ realmente es el camino a seguir aquí, incluso si realmente está escribiendo 'C con clases', que generalmente es un mejor modelo y luego completa C ++ 11 para núcleos pequeños (desactive las excepciones y RTTI, odiará el huella de memoria de esa mierda). El compilador de C sabrá cómo optimizar esto y te ocultará muchos detalles desordenados.