Bueno,
intentando, quizás, acercarme más un poco a la solución que buscas de sSelect+sStatus, voy a explicarte un método que se me ha ocurrido:
Evidentemente un puntero a una función no es más que una dirección de memoria así que sSelect podría ser una dirección de memoria que inicialmente señalase a la función Select_A. Tambíen puedes haces que al iniciar tu aplicación se calculen las diferencias entre Select_A y el resto para saber que desplazamiento debes aplicar respecto a la dirección de memoria de Select_A y esos serán los valores de sStatus. Por ejemplo
Usaré valores enteros para explicarme mejor.
Select_A ----- dirección 100
Select_B ----- dirección 150
Select_C ----- dirección 75
sSelect = 100;
posibles valores de sStatus = 0 (si es Select_A), 50 (si es Select_B), -25 (si es Select_C).
Con esto, es posibles hacer en un momento dado una llamada a la función que quieras con sSelect+sStatus.
Respecto a lo de lenguaje compilado e interpretado discreparé un poquito, siempre desde mi ignorancia, porque lenguajes relativamente interpretados como java o perl requieren de una fase de precompilación para generar el código interpretado y en éste también se han traducido los nombres de funciones y demás por direcciones. Sé que perl tiene una función que permite hacer lo que quieres llamada eval si mal no recuerdo y es posible que realice un cálculo relativo de la posición de memoria de dicha función.
PD: Te recomiendo que calcules los desplazamientos de las funciones respecto a una base (en este caso Select_A) porque una vez los tengas ya puedes cambiar tu código y hacerlo constante ya que la distancia debería ser siempre la misma salvo que modifiques código.
Un saludo y gracias.
Última edición por piccolo2101 fecha: 30-01-2006 a las 09:47:11.
|