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 :
(avec la fonction my_put_nbr qui est déclaré comme ceci : int my_put_nbr(int);)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
j'ai beau essayer (*applyf) = &my_put_nbr;,
(*applyf) = my_put_nbr;,
applyf = my_put_nbr;, rien ne fonctionne.
J'ai l'erreur suivante :
ou bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 test.c:8:10: warning: assignement from incompatible pointer type applyf = &my_put_nbr; ^
Je ne comprends pas à quoi ces erreurs correspondent...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 test.c:8:13: error 1value required as left operand of assignment (*applyf) = my_put_nbr; ^
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.
Partager