> Yo tengo entendido que una forma muy eficiente de escribir codigo C "puro" > basado en objetos (distinto a OO, ya que no hay herencia), es utilizando > estructuras con campos que son punteros a funciones que tienen como primer > parametro generalmente una variable de la susodicha estructura, el famoso > "objeto" this, con lo cual se tienen en las estructuras los datos y los > métodos > que manipulan esos datos :-) creo que gran parte del kernel de linux esta > escrito así... o me equivoco, doc? >
dependiendo de tu definicion de eficiente. generalmente utilizar punteros a funciones puede no resultar ser una buena idea debido al tiempo que pierdes derreferenciando a la funcion. Puede parecer ridiculo, pero hay veces que ese pequenno tiempo hace una gran diferencia. Respecto al kernel de linux, hay algunas partes donde se utiliza esa forma de escribir codigo (particularmente para que todos los drivers tengan la misma interfaz), pero hay otros lados donde simplemente no se puede utilizar eso. El problema de usar punteros a funciones esta en que derreferencias en tiempo de ejecucion, lo cual aparte de introducir un tiempo de delay puede tener consecuencias desagradables (por ejemplo cuando tienes varios ambientes de memoria separados, lo que es tipico en programacion de kernel), y el puntero puede apuntar al lado oscuro de la luna en el mejor de los casos... Sin embargo, si se acostumbra usar una estructura con punteros para algunas zonas del kernel.

