j'ai une fonction C qui prend un pointeur de fonction comme argument, il est un destructor que je vais appeler à la fin de mon programme. Voici le prototype de ma fonction:C: pointeur de fonction et typedef problème
int store_dest(void (*routine)(void *));
Je veux stocker ce pointeur de fonction dans une structure avec quelques autres infos. Pour avoir une bonne structure, je veux avoir un typedef pour ce pointeur de fonction. Voici mon typedef:
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 définir le champ « dest » à une fonction de la mine, est le prototype ici de cette fonction:
void* my_dummy_dest(void* foo);
le problème (en fait, il est juste un avertissement, mais je voudrais 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: attribution du type pointeur incompatible"
Même quand je les compare:
if (my_struct.dest == &my_dummy_dest)
Je reçois un « avertissement: comparaison des types distincts de pointeur ne dispose pas d'un casting "
Mais je reçois pas d'avertissement quand je mets le champ « dest » avec une autre routine. Je ne comprends pas pourquoi j'ai ces avertissements.
oups, je savais que c'était quelque chose de stupide comme ça, merci quand même :) – claf