bonjour,
est-ce qu'il est possible en C de mettre en parametre une fonction fct2 dans une autre fonction fct1, par exemple void fct1(fct2, int a) ?
merci de vos reponses.
bonjour,
est-ce qu'il est possible en C de mettre en parametre une fonction fct2 dans une autre fonction fct1, par exemple void fct1(fct2, int a) ?
merci de vos reponses.
Salut,
Oui c'est possible avec les "pointeurs de fonction", il y a quelques fonctions de la librairie standard qui utilisent cette technique, exemple :
Ici le 4eme param�tre doit �tre un pointeur sur une fonction ayant le prototype donn� (retourne un int et a 2 param�tres const void *)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 void qsort (void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
http://man.developpez.com/man3/qsort.3.php
Effectivement, si la signature de la fonction que tu veux mettre en param�tre ressemble � :alors la fonction qui prendra fct en pram�tre devra avoir une signature du genre
Code C : S�lectionner tout - Visualiser dans une fen�tre � part int fct(void *arg). A chaque fois que tu voudras appeler une fct en param�tre de Tafonction, il faudra veiller � ce que la signature de fct corresponde bien � la signature attendu en param�tre.
Code C : S�lectionner tout - Visualiser dans une fen�tre � part TonType Tafonction(int (*ptfct)(void *),.....)
Un rapide exemple pour te montrer l'utilisation des pointeurs de fonction.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stdio.h> int fct2 (int i) { return i*10; } int fct3 (int i) { return i*100; } void fct1(int (*f)(int), int a) { printf ("f(%d)=%d\n", a, f(a)); } int main () { fct1 (fct2, 7); fct1 (fct3, 7); return 0; }
Partager