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

Responder a