Gonzalo Merayo, el 21 de agosto a las 16:15 me escribiste:
> a ver si te gusta:
> ----------------------------------------------------------------
> struct lalala{
> struct lalala (*fp)();
> };
> typedef struct lalala funct;
> typedef funct (*fp)();
>
> funct f1();
> funct f2();
>
> funct f1() { funct f; printf("f1()\n"); f.fp = f2; return f; }
> funct f2() { funct f; printf("f2()\n"); f.fp = f1; return f; }
>
> int main()
> {
> funct fp1 = f1();
> funct fp2 = (*fp1.fp)();
> funct fp3 = (*fp2.fp)();
> return 0;
> }
> ----------------------------------------------------------------
No, la verdad que no me termina de agradar :P
La idea principal es que sea transparente para quien cree las funciones
f1 y f2. Si en el main tengo que hacer chanchadas muy feas, no es mayor
problema, pero la idea es que el que escriba f1 y f2, pueda hacerlo sin
aguantar el mal olor de los demás hacks :D
Igual como el lenguaje (AFAIK) no provee una forma de hacerlo limpio,
siempre va a tener que haber algo "infenctando" al que haga las funciones,
algún tipo de convención o "idiom". De la forma que postee yo, la única
convención es que el return sea void* (en vez de un puntero a función como
en realidad debe ser) y el casteo consecuente en el return.
Me puse a jugar con otros esquemas de wrapper (con conversiones de
punteros para evitar los casteos explícitos) pero tampoco llegué a nada
convincente :S
--
LUCA - Leandro Lucarella - Usando Debian GNU/Linux Sid - GNU Generation
------------------------------------------------------------------------
E-Mail / JID: [EMAIL PROTECTED]
GPG Fingerprint: D9E1 4545 0F4B 7928 E82C 375D 4B02 0FE0 B08B 4FB2
GPG Key: gpg --keyserver pks.lugmen.org.ar --recv-keys B08B4FB2
------------------------------------------------------------------------
Can you stand up?
I do believe it's working, good.
That'll keep you going through the show
Come on it's time to go.
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion