problème avec les pointeurs de fonctions
Bonjour,
j'ai aujourd'hui une nouvelle question ! Alors voilà, je me suis lancé dans la compréhension des pointeurs de fonctions. Sauf que dès mon premier essai j'ai une erreur. Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10
| #include "my.h"
int main(int argc, char **argv)
{
int item;
int (*applyf)(void *);
item = 1;
applyf = &my_put_nbr;
applyf(&item);
} |
(avec la fonction my_put_nbr qui est déclaré comme ceci : int my_put_nbr(int);)
j'ai beau essayer (*applyf) = &my_put_nbr;,
(*applyf) = my_put_nbr;,
applyf = my_put_nbr;, rien ne fonctionne.
J'ai l'erreur suivante :
Code:
1 2 3
| test.c:8:10: warning: assignement from incompatible pointer type
applyf = &my_put_nbr;
^ |
ou bien :
Code:
1 2 3
| test.c:8:13: error 1value required as left operand of assignment
(*applyf) = my_put_nbr;
^ |
Je ne comprends pas à quoi ces erreurs correspondent...
Je sais que si je déclare mon pointeur int (*applyf)(int) ça fonctionne, mais d'après ce que j'ai lu sur le net, les pointeurs void*, peuvent pointer n'importe quel type de variable, donc j'aurai voulu la déclarer avec int (*applyf)(void *), ce qui m'aurait permis de ne pas simplement utilisé des fonctions qui ont des int en paramètres.