• # ça marche !

    Posté par . En réponse au journal Et Dieu inventa le soutien gorge !. Évalué à 10.

    Ça me parait un peu compliqué, mais ça marche !
    Moi, je me serait contenté d'une liste chainée simple de pointeur de fonctions dans le genre :

    struct layer {
     void (*next_func)(struct layer*, ...);
     struct layer* next_layer;
    };
    
    

    et derrière, tes fonctions deviennent :

    void l1(struct layer* lay, ...) {
     ...
     lay->next_func(lay->next_layer, ...);
    }
    
    

    Tu peux facilement ajouter un truc au milieu de ta couche en ajoutant une fonction au milieu de liste layer.

    Et sinon, juste pour le fun :

    struct x {
     int a;
     int b;
    };
    struct x X;
    
    

    Et admettons :

    X est à l'adresse 0x14C4
    X.a est à l'adresse 0x14C8
    X.b est à l'adresse 0x14CC
    
    

    chez moi, l'adresse de X.a est la même que X ;)