Voici une petite démonstration d'une implémentation des delegates que j'ai fait en langage C :)
Dans ce code, une fonction est déclarée en locale avec un nom unique, composé du mot
"__delegate__" et du numéro de la ligne courrante (__LINE__). Puis, l'adresse est stockée
dans la variable de l'utilisateur sous forme d'un pointeur sur fonction de type "Delegate".
#include <stdio.h> #define CONCAT2(s1, s2) s1##s2 #define CONCAT(s1, s2) CONCAT2(s1, s2) #define NewDelegate(Ptr, Expr) void \ CONCAT(__delegate__, __LINE__)() Expr \ Ptr = (Delegate)&CONCAT(__delegate__, __LINE__) typedef void (*Delegate)(void); void PseudoDelegateTest() { int i; Delegate my_delegate; NewDelegate(my_delegate, { printf("i = %d\n", i); }); for (i = 0; i < 5; ++i) my_delegate(); } int main(int argc, char **argv) { PseudoDelegateTest(); getchar(); return (0); }