C : le pointeur de la fonction et de la définition de type de problème

J'ai une fonction C qui prend un pointeur de fonction comme argument, c'est un destructeur, que je vais appeler à la fin de mon programme. Voici le prototype de ma fonction :

int store_dest(void (*routine)(void *));

Je veux stocker cette fonction pointeur vers une structure avec quelques autres infos. Afin d'avoir une belle structure, je veux avoir un typedef pour ce pointeur de fonction. Voici ma définition de type :

typedef void (*my_destructor)(void *);

Et voici ma structure :

typedef struct my_struct{
  my_destructor dest;
  other_info ...
} my_struct;

Au cours de l'étape d'initialisation, je veux mettre le "dest" champ à une fonction de la mine, voici le prototype de cette fonction :

void* my_dummy_dest(void* foo);

Le problème (en fait c'est juste un avertissement, mais je voudrais la supprimer) se produit lorsque je tente de régler le "dest" champ de ma structure "my_dummy_dest" :

my_struct.dest = &my_dummy_dest;

Je reçois un "avertissement: l'affectation d'incompatible pointer type"

Même quand je viens de les comparer :

if (my_struct.dest == &my_dummy_dest)

Je reçois un "avertissement: comparaison de différents types de pointeur manque un cast"

Mais je n'ai pas d'avertissement lorsque j'ai mis le "dest" domaine avec une autre routine. Je ne comprends pas pourquoi j'ai ces mises en garde.

OriginalL'auteur claf | 2009-04-05