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 : 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);
}
(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 : 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;
              ^
ou bien :
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 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.