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 :

Utilisation de retval


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut Utilisation de retval
    salut à tous et à toutes ,


    J'utilise retval dans un programme en C , dont le but de retourner la valeur de 2 fonctions si l'une des des fonctiones est appeller .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int Condition ( int donnees , int valeurs )
    {
    retval =0;
     
    /*  Corps de la  fonction  */
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int fonction1 ( unsigned char *in , unsigned char *out)
     
    {
     
    /* Corps de la fonction */  
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int fonction2 ( int valeur1 ,int valeur2)
     
    {
     
    /*   Corps de la fonction  */
     
    }


    Lorsque je souhaite retourner la valeur la fonction N°1 je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ( Condition () ) retval  = fonction1 (in,out);
    else  retval = fonction2 ( valeur1, valeur2);
    Le Résultat : j'obtiens le résultat demander de la fonction1 mais pas de la fonction2 .

    Si je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ( Condition () ) retval  = fonction2 (in,out);
    else  retval = fonction1 ( valeur1, valeur2);
    J'obtiens le résultat de la fonction2 est pas de la fonction1.


    J'ai essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( Condition () ) retval  = fonction1 (in,out) || fonction2(valeur1,valeur2);

    J'obtiens le résultat de la fonction qui est en premier paramétre (fonction1) .

    Merci pour vos différents conseils et suggéstions .

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Lae,

    Revois ton code.

    Penses-tu que
    appelle ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int Condition ( int donnees , int valeurs )
    {...

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Citation Envoyé par droggo Voir le message
    Lae,

    Revois ton code.

    Penses-tu que
    appelle ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int Condition ( int donnees , int valeurs )
    {...

    salut droggo

    Lorsque je souhaite retourner la valeur la fonction N°1 je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
     
    if ( Condition () ) retval  = fonction1 (in,out);
    else  retval = fonction2 ( valeur1, valeur2);

    Le Résultat : j'obtiens le résultat demander de la fonction1 mais pas de la fonction2 .

    Si je mets :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ( Condition () ) retval  = fonction2 (in,out);
    else  retval = fonction1 ( valeur1, valeur2);
    J'obtiens le résultat de la fonction2 est pas de la fonction1.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Lae,

    L'appel
    ne correspond pas au prototype de ta fonction, ton compilateur doit te prévenir.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    salut droggo ,

    On va faire trés simple , on supprime la CONDITION .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     retval  = fonction1 (in,out);
     retval = fonction2 ( valeur1, valeur2);
    Je souhaite utiliser RETVAL pour retourner la fonction1 si une condition est réaliser SINON retourner la fonction2 .
    J'obtiens le résultat demander de la fonction1 mais pas de la fonction2 .

    RETVAL est déclarer comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int retval = 0 ;
     
    retval  = fonction1 (in,out);
    retval =  fonction2 ( valeur1, valeur2);
    La Quéstion :


    Comment créer un code qui retourne la fonction 1 si une Condition est réaliser
    SINON utiliser la fonction2 avec RETVAL .

  6. #6
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Tu brouilles les pistes en mettant retval dans la fonction Condition(), alors que tu utilise Condition() à côté de retval. On se dit est-ce qu'il y a de la récursivité dans son truc ?

    Mais bon, passons.

    La façon dont tu le poses enfin me fait donner cette réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(condition())
      retval = fct1();
    else
      retval = fct2();
    si cela ne marche pas comme attendu, c'est que :
    - fct2 retourne la même chose que devrait te retourner fct1, ce qui te fait dire que tu as toujours le résultat de fct1.
    - condition() ne retourne pas ce à quoi tu t'attends.

    Donc tu peux utiliser des variables temporaires, faire des printf, et te lancer dans une petite session de déboguage...

Discussions similaires

  1. Petit soucis avec l'utilisation de RETVAL
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 05/04/2007, 17h59
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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