IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

fonctionnement d'une Callback


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Par défaut fonctionnement d'une Callback
    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

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    avec callback :
    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
    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;
    }
    sans callback:
    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
    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;
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Par défaut
    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

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    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.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Par défaut fonctionnement d'une Callback
    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

  6. #6
    Membre très actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    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 ?

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par roujiC Voir le message
    j'aimerai bein avoir une definition completet et simple d'une callback (fonctionnment ) ???
    « 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.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/08/2012, 11h48
  2. [AJAX] [XMLHttp][IE]Fonction qui ne fonctionne qu'une seule fois
    Par narnou dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/07/2007, 11h16
  3. allocation dynamique ne fonctionne qu une fois.
    Par michael urbain dans le forum C
    Réponses: 7
    Dernier message: 11/03/2006, 10h51
  4. VBA/97/xl->REPT("z",10) ne fonctionne pas, une
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/12/2005, 17h08
  5. Réponses: 7
    Dernier message: 31/08/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo