j'aimerai bein avoir une definition completet et simple d'une callback (fonctionnment ) ???
et je voudrai savoir si ilest possible dans un programme a base de callaback de refaire le meme programme(qui fait la meme chose) sans callback??
merci
Version imprimable
j'aimerai bein avoir une definition completet et simple d'une callback (fonctionnment ) ???
et je voudrai savoir si ilest possible dans un programme a base de callaback de refaire le meme programme(qui fait la meme chose) sans callback??
merci
avec callback :
sans callback:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include <stdio.h> #include <stdlib.h> static void *ptr = NULL; static void my_free (void) { free (ptr); } int main (void) { ptr = malloc (BUFSIZ); atexit (my_free); /* <= callback */ if (ptr != NULL) { printf ("ptr = %p\n", ptr); } return 0; }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include <stdio.h> #include <stdlib.h> static void *ptr = NULL; static void my_free (void) { free (ptr); } int main (void) { ptr = malloc (BUFSIZ); if (ptr != NULL) { printf ("ptr = %p\n", ptr); } my_free (); /* <= appel explicite */ return 0; }
dit moi uniquement si j'ai bien compris??? le programme 1 s'exécute il arrive e atexit (my_free); il enregistre une callaback (une adresse une donnée ou un appelle a une fonction je ne comprend ce qu'il fait sur ce point) il continue a exécuté le programme il fait le print puis il revient a la callback
Bonjour,
dans le programme 1,
-on fait une allocation
-on enregistre un callback (un pointeur sur fonction) qui sera appelé par le systeme a la termisaison du programme
-le printf
-fin du programme detecté
-le systeme appelle le callback
-fin du programme
Grosso merdo un callback c'est l enregistrement de la l adresse d une sequence d instruction dont l execution est declenchée plus tard, sur un evenement precis.
ben merci pour l'explication la j'ai une bonne idée sur son fonctionnement je te remercie beaucoup, je vais testé le tous et je te tien au courant thanks
Comment cela se passe en interne ? y a t'il une table avec les adresses des fonctions callback ? Comment créer des callback soit même ? j ai vu le mot clef callback dans un source mais il me semble que c'était avec l'API win32.
En fait les callback sont principalement utiliser pour le traitements en sortie (mais cela doit utiliser les signaux je pense) ou dans les événements (par exemple dans une interface graphique) comme le pattern observer ?
« call back » signifie littéralement « rappel ». C'est juste un concept.
Concrètement, ça consiste à passer la main à une routine tierce, en lui passant en argument l'adresse d'une de tes fonctions, pour qu'elle puisse ensuite, elle, l'appeler quand elle en a besoin.
Par exemple, les handlers de signaux sont généralement des fonctions de callback.
Dans un autre domaine, quand tu fais une interface graphique, tu crées tous tes éléments (fenêtres, boutons, etc.) et tu associes à chacun une de tes fonctions pour qu'une action leur corresponde. Une fois que tu as terminé, tu passes la main au système (en entrant généralement dans une boucle principale) qui la garde pendant toute la durée de la session, et qui s'occupe de suivre les mouvements de l'utilisateur. Quand celui-ci clique sur un bouton, le système rappelle la fonction que tu lui as passée.
L'implémentation fait ce qu'elle veut. Ce qui est sûr, c'est que pour enregistrer l'adresse et appeler une fonction, il faut un pointeur de fonction.
Un exemple :Citation:
Comment créer des callback soit même ?
http://emmanuel-delahaye.developpez.com/complog.htm
Ça sert à exécuter une action dont on ignore tout au moment de l'écriture du code (système, bibliothèque).Citation:
En fait les callback sont principalement utiliser pour le traitements en sortie
Par exemple la fonction compare de qsort(). elle dépend de ce qu'on a à trier, mais le reste du code (l'algo de tri) est générique.
Sympathique cet article, tu aurai pu écrire pour "l'art du beau code" ;)
J'ai juste pique le titre d un livre que je lis en ce moment dont un article parle de la même chose (la structure de la bibliothèque du CERN écrite en FORTRAN)
J ai prit cette habitude de faire comme indique, détail : j utilise doxygen pour documenter les entêtes.