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 :

Callback vs Switch


Sujet :

C++

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    504
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 504
    Par d�faut Callback vs Switch
    Bonjour,

    je voudrais savoir les grandes diff�rences entre un callback et un switch ?

    car on peut tres bien impl�menter des fonctions dans les switch dans une boucle principale alors pourquoi que certains d�veloppeurs utilisent des callbacks pour faire la m�me chose ?



    merci !

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Ce n'est pas tout � fait la m�me chose.

    Autant l'instruction switch fait partie du langage C et C++ autant le callback n'est pas une instruction mais plut�t un concept.

    En fait, tu utilises l'instruction switch quand le programme appelant dispose de la condition et des actions � faire suivant la condition.

    Dans le cas du callback, c'est quelqu'un d'autre qui appelle la fonction. Ce quelqu'un d'autre peut �tre le noyau, le framework ou encore un dispositif de l'application.

    Un exemple qui me vient � l'esprit, c'est la fonction Microsoft d'�num�ration des fontes de caract�res EnumFonts. Tu appelles la fonction en lui donnant une fonction de rappel (une callback) en 3eme param�tre. Cette fonction de rappel est appel�e par le noyau (on va faire simple) pour chaque fonte de caract�res.

    Ce n'est pas a toi de faire un truc du genre while(GetNextFont(...) != NULL) do something; c'est le noyau qui le fait pour toi en appelant la fonction de callback.

    Je trouve que c'est un moyen simple et �l�gant de faire de l'�v�nementiel.
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    504
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 504
    Par d�faut
    merci !

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    On pourrait aussi expliquer les choses sous un autre angle.

    Une s�lection de la fonction appel�e au travers d'un switch n�cessite de rajouter une valeur chaque fois qu'une nouvelle possibilit� est envisag�e et rajout�e.

    L'avantage de l'utilisation d'un callback est qu'il suffit que le type de retour, le nombre et le type des arguments de la fonction corresponde pour que l'appel de la fonction se fasse...

    Y compris s'il s'agit d'une fonction dont l'utilisation n'avait pas �t� envisag�e � l'origine (cr��e par l'utilisateur, par exemple).

    Cela permet donc souvent d'assurer une flexibilit� bien plus grande, entre autres bas�e sur le principe OCP (Open Close Principle : un code doit �tre ouvert � l'�volution mais ferm� � la modificaiton).

    Ceci dit, le callback ou pointeur de fonction est assez "archa�que" dans le sens o� les foncteurs permettent d'obtenir un r�sultat similaire, en permettant une meilleure lisibilit�
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par koala01 Voir le message
    Ceci dit, le callback ou pointeur de fonction est assez "archa�que" dans le sens o� les foncteurs permettent d'obtenir un r�sultat similaire, en permettant une meilleure lisibilit�
    Un foncteur C++, ce n'est pas un pointeur de fonction d�guis� ?
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  6. #6
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Citation Envoy� par ram-0000 Voir le message
    Un foncteur C++, ce n'est pas un pointeur de fonction d�guis� ?
    Je sens un peu de provoc' l� non ?
    Un foncteur c'est plus qu'un pointeur de fonction puisque tu peux avoir un �tat associ� par exemple (variable membre du foncteur). Au del� du pointeur de fonction ou du foncteur (ou d'une lambda), il vaut mieux avoir une approche g�n�rique avec un concept 'callable' (c'est � dire � qui on peut appliquer les parenth�ses () avec �ventuellement des arguments). Ensuite, libre � toi de lui passer un foncteur, un pointeur de fonction ou une lambda

  7. #7
    Membre Expert

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par d�faut
    Citation Envoy� par ram-0000 Voir le message
    Un foncteur C++, ce n'est pas un pointeur de fonction d�guis� ?
    Des diff�rences notables l'emportent sur les points communs :

    * un pointeur sur fonction ne peut pas �tre associ� � un environnement implicite ; un foncteur peut l'�tre.

    * un foncteur ne peut pas �tre vide (mais il peut ne rien faire) ; un pointeur sur fonction peut l'�tre (== NULL).

    * puisqu'un foncteur est un objet, on peut en h�riter.

    Comme point commun, on a : au niveau du code, l'ex�cution d'un foncteur ressemble vachtiment bien � l'utilisation d'un pointeur sur fonction.
    [FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
    Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
    Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  8. #8
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par 3DArchi Voir le message
    Je sens un peu de provoc' l� non ?
    Non non, j'avais juste oubli� qu'avec le foncteur, il y avait tout l'environnement de l'objet

    Citation Envoy� par Emmanuel Deloget Voir le message
    * un pointeur sur fonction ne peut pas �tre associ� � un environnement implicite ; un foncteur peut l'�tre.

    * un foncteur ne peut pas �tre vide (mais il peut ne rien faire) ; un pointeur sur fonction peut l'�tre (== NULL).

    * puisqu'un foncteur est un objet, on peut en h�riter.

    Comme point commun, on a : au niveau du code, l'ex�cution d'un foncteur ressemble vachtiment bien � l'utilisation d'un pointeur sur fonction.
    Merci pour ces �claircissements
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Salut

    J'ajouterai que l'utilisation de callbacks au lieu de foncteurs rend le d�buguage peu pratique car le d�bugueur g�re en g�n�ral assez mal l'appel de pointeur de fonction, et du coup la callstack se retrouve toute pourrie.

    C'est b�te mais mine de rien c'est quand m�me utile de pouvoir d�buguer �a !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Aide sur un switch 3com
    Par Gladiator dans le forum D�veloppement
    R�ponses: 5
    Dernier message: 06/02/2004, 17h49
  2. R�seaux : switch, routeur et wi-fi
    Par SteelBox dans le forum Hardware
    R�ponses: 4
    Dernier message: 07/12/2003, 20h25
  3. Switch 1000Mbit
    Par Civodul4 dans le forum Hardware
    R�ponses: 8
    Dernier message: 02/12/2003, 13h16
  4. switch
    Par drKzs dans le forum C
    R�ponses: 3
    Dernier message: 07/10/2003, 07h59
  5. R�ponses: 6
    Dernier message: 26/01/2003, 13h45

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