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 :

redefinition de fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut redefinition de fonction
    Bonjour a tous !

    Quelqu'un saurait il me dire comment faire pour que lorsque une fonction soit appelée, une autre se lance a sa place ?

    Concretement, je voudrai que lors de lappel d'une fonction A, ca soit la fonction B qui se lance..

    Je crois savoir qu'il faut pour cela utiliser les macros...

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Par défaut
    C'est un peu gorrêt, mais:

    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
     
    #include <stdio.h>
    void funca()
    {
            printf("a called\n");
    }
    void funcb()
    {
            printf("b called\n");
    }
    #define funcb funca
    int main(int argc, char **argv)
    {
            funcb();
            return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ gcc -Wall main.c ; ./a.out
    a called

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Et avec les 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
    #include <stdio.h>
    void funca()
    {
            printf("a called\n");
    }
     
    int main(int argc, char **argv)
    {
            void (*funcb)(void);
            funcb = funca;
     
            /*...*/
            funcb();
            return 0;
    }
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Voici un excellent tutoriel sur les pointeurs de fonction:

    http://www.newty.de/fpt/zip/f_fpt.pdf
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Ok merci beaucoup pour cette reponse..

    La fonction que je veux redefinir est une fonction de trace ressemblant a printf. J'aimerai que ca soit printf qui soit appelé a la place.. or j'ai un probleme avec les arguments car ceux de printf se termine par "..." réservés aux variables.

    ex : je veu remplacer trace(int, char, ...) par printf(char, ...)

    Merci du coup de main !

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gdpasmini
    La fonction que je veux redefinir est une fonction de trace ressemblant a printf. J'aimerai que ca soit printf qui soit appelé a la place.. or j'ai un probleme avec les arguments car ceux de printf se termine par "..." réservés aux variables.

    ex : je veu remplacer trace(int, char, ...) par printf(char, ...)
    La méthode classique est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define PRINTF(a) printf a
    et on appele avec 2 parenthèses (au cas où y'en ait une qui pète...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       PRINTF (("J'ai %d ans\n", 50));
    Si on veut désactiver les PRINTF(), on redéfini comme ça :
    Il est d'usage de procéder ainsi :
    Dans le haut du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /* 0=normal, 1=debug */
    #define DBG 1
     
    #ifndef DBG
    # error DBG must be defined to 0 or 1
    #else
    # if DBG
    #define PRINTF(a) printf a
    # else
    #define PRINTF(a)
    # endif
    #endif

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    oki merci beaucoup

    Mais ceci ne marche que si les arguments de PRINTF et de printf sont les memes ?

    Dans mon cas, ils sont différents..et variables puisque le printf peut avoir plusieurs arguments...

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gdpasmini
    Mais ceci ne marche que si les arguments de PRINTF et de printf sont les memes ?

    Dans mon cas, ils sont différents..et variables puisque le printf peut avoir plusieurs arguments...
    Relis mon post... et fait des essais. Si tu as un problème, crie...

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par mhooreman
    C'est un peu gorrêt,
    Un peu de respect pour ce charmant animal... On écrit goret, tout simplement...

    http://emmanuel-delahaye.developpez.com/goret.htm

  10. #10
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par défaut
    oui, c'est un etre vivant injustement dégradé comme la truie, le maquereau ou la daube

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par la drogue c'est mal
    oui, c'est un etre vivant injustement dégradé comme la truie, le maquereau ou la daube
    C'est quoi la daube
    Je ne connais que le boeuf en daube (et aussi mes programmes en général ).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Un peu de respect pour ce charmant animal... On écrit goret, tout simplement...
    Au temps pour moi... j'avais une hésitation

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 382
    Par défaut
    Oki tout fonctionne !

    Merci pour vos conseils et pour le debat sur les animaux de la campagne!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Héritage, fonction virtuelle, redefinition et thread
    Par contremaitre dans le forum Threads & Processus
    Réponses: 12
    Dernier message: 26/08/2008, 12h50
  2. Surcharge (ou redéfinition) de fonction
    Par Chii-san dans le forum SL & STL
    Réponses: 2
    Dernier message: 14/11/2005, 09h49
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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