Direcciones de funciones

Started by l1nk3rn3l, December 23, 2009, 03:36:02 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

l1nk3rn3l

Bueno estaba usando maquina de estados (FSM)

y se me vino a la mente usar funciones con punteros

(*p)()

hay alguna forma de guardar en una variable pointer la direccion de una funcion?

asi en lugar de usar una hilera de swicth , podria usar una simple variable que llame
a una funcion determinada

(*vectorfunciones[estadoactual])();

y seria mas rapido ..  pero bueno ya que esto se hace en tiempo de compilacion
habria alguna forma de hacerlo desde una DLL me podrian dar  sugerencias?


Windgate

Lo comente hace tiempo... Creo que tal y como esta Bennu ahora no se puede, pero seria interesante poder tener punteros a funcion como en C... Por ejemplo el sort para ordenar podria hacerse generico si pasamos la funcion con el criterio de ordenacion :P
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

maquina de estado finito...

podrias ejecutar una funcion a partir de su nombre, pero punteros a funcion no es posible.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

No he entendido bien lo que ha querido decir Splinter ;D, pero recuerdo que esto ya se discutió tiempo ha y se dijo que sí era posible, pensé que ya estaba implementado ¿o fue en Fenix?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

¿Ejecutar a partir del nombre? ¿Entonces un parametro de tipo string podria indicar la funcion a ejecutar?
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

claro, como lo hace el modulo de debug...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Module name: mod_debug.dll

Module Dependency:

libkey
librender


Globals vars dependency:

shift_status


Locals vars dependency:

id
father
bigbro
son
reserved.status


Internals callbacks:

module_initialize
module_finalize
process_exec_hook


Arg, poco se puede sacar con esto, he mirado el delicioso manual de Osk y aunque he visto algunas posibilidades interesantes (No he usado a fondo las posibilidades del debug aun) no se habla de ello. ¿Algun ejemplo de invocacion a una funcion a partir de una string que guarda su nombrecito?

Es interesante, ¿Pero tambien se puede especificar en la string la cantidad y tipo de los parametros?, con eso ya tenemos una alternativa al puntero a funcion de C :P

Ejemplito please :D
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

nop, desde el debugger, vos podes lanzar un proceso si queres con sus parametros... y eso mismo es una funcion, mas que una funcion, una buena porcion de codigo, que no solo lanza el proceso a partir de su nombre, sino que analiza los tipos de parametros y la cantidad...

en base a ese codigo se podria hacer una dll que lance procesos o funciones... pero esto es "basado en"... no hay una funcion lista que ya haga esto...

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

l1nk3rn3l

NO LO habia visto...

ok me sirve , gracias...   ;D