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 :

stoquer le retour d'une fonction


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Points : 29
    Points
    29
    Par défaut stoquer le retour d'une fonction
    bonjour à tous,
    j'ai la fonction suivante:
    void *TR98_SG_DB_Open(SG_DB_Type type)
    {
    void *handle = NULL;
    if (bool==1)
    {
    handle=SG_DB_Open(type);
    bool=0;
    }
    return ret_handle;
    }
    Mon problème est que je veux stoquer le résultat de SG_DB_Open(), la première fois et j'ai pas pu le faire, est-ce que je dois déclarer une variable globale pour y stoquer ce résultat?

    Merci à tous.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Code incomplet, ne compile pas même en supposant les types et fonctions déclarés:
    • Qu'est-ce que bool ?
    • Qu'est-ce que ret_handle ?


    PS: Réponde d'ordre général: Pour qu'une fonction retourne plusieurs valeurs, il faut qu'un au moins de ses arguments soit un pointeur.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Points : 29
    Points
    29
    Par défaut
    bonjour,
    Merci pour votre réponse, j'ai mis juste l'implémentation de la fonction,
    bool est une variable globale de int
    et ret_handle, je me suis trompé c'est handle, donc le code est le suivant

    int bool=1;
    void *TR98_SG_DB_Open(SG_DB_Type type)
    {
    void *handle = NULL;
    if (bool==1)
    {
    handle=SG_DB_Open(type);
    bool=0;
    }
    return handle;
    }
    Cordialement

  4. #4
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 295
    Points
    295
    Par défaut
    remplace
    par
    et tu aura le retour de SG_DB_Open(type) en sortie de TR98_SG_DB_Open

    note : on ne sais pas d'ou sort bool et il doit etre a 1 pour que SG_DB_Open() soit appele.

    [edit]
    et m.. j'ai ete trop lent
    [\edit]
    il parait que la plume est plus forte que l'épée, heureusement j'ai une hache

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut

    bool n'a aucune raison d'être une variable globale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void *TR98_SG_DB_Open(SG_DB_Type type, int *pBool)
    {
    	void *handle = NULL;
    	if(*pBool==1)
    	{
    		handle=SG_DB_Open(type);
    		*pBool=0;
    	}
    	return handle;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Points : 29
    Points
    29
    Par défaut
    bool en fait est un booléen pour m'assurer que la fonction SG_DB_Open soit appelée une seule fois
    en fait le retour est bien handle.
    Je m'exlilque encore, la fonction SG_DB_Open ouvre une base de donnée, et moi je veux l'ouvrir une seule fois cette base, c'est pour cela que je met cette variable booléenne.
    Mon problème c'est qu'au premier appel de cette fonction je veux stocker son retour dans une variable qui ne doit pas ensuite se ré-initialiser à NULL.
    Merci.

  7. #7
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 295
    Points
    295
    Par défaut
    declare bool en local avec le mot cle "static" a ce moment et ca t'evite de l'avoir en parametre et en global
    il parait que la plume est plus forte que l'épée, heureusement j'ai une hache

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 72
    Points : 29
    Points
    29
    Par défaut
    Merci je vais essayer ceci

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Et que retournes-tu si on l'appelle une seconde fois ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. retour d'une fonction
    Par papy_tergnier dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 15/05/2006, 17h21
  2. [XML][XSLT][debutant]retour d'une fonction
    Par maxvador dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 30/03/2006, 14h12
  3. recuperer en php le retour d'une fonction plsql
    Par gismoblue dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/03/2006, 16h39
  4. PL/SQL retour d'une fonction
    Par aaronw dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/12/2005, 13h25
  5. [Oracle 9.1] Types de retour d'une fonction PL/SQL
    Par ftrifiro dans le forum PL/SQL
    Réponses: 8
    Dernier message: 12/10/2005, 16h54

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