Autor Tema: Direcciones de funciones  (Leído 2180 veces)

l1nk3rn3l

  • Hero Member
  • *****
  • Mensajes: 2004
  • Karma: 257
Direcciones de funciones
« en: Diciembre 23, 2009, 03:36:02 pm »
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

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: Direcciones de funciones
« Respuesta #1 en: Diciembre 23, 2009, 07:17:31 pm »
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

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Direcciones de funciones
« Respuesta #2 en: Diciembre 24, 2009, 02:15:03 am »
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

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: Direcciones de funciones
« Respuesta #3 en: Diciembre 24, 2009, 02:47:47 am »
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

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: Direcciones de funciones
« Respuesta #4 en: Diciembre 24, 2009, 03:03:48 am »
¿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

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Direcciones de funciones
« Respuesta #5 en: Diciembre 25, 2009, 02:06:03 am »
claro, como lo hace el modulo de debug...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: Direcciones de funciones
« Respuesta #6 en: Diciembre 25, 2009, 01:11:43 pm »
Código: [Seleccionar]
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

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Direcciones de funciones
« Respuesta #7 en: Diciembre 25, 2009, 03:38:09 pm »
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

  • Hero Member
  • *****
  • Mensajes: 2004
  • Karma: 257
Re: Direcciones de funciones
« Respuesta #8 en: Diciembre 26, 2009, 05:16:28 pm »
NO LO habia visto...

ok me sirve , gracias...   ;D