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);
}



