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 :

faire un va_start() dans une fonction contenant possiblement aucun paramètres


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Points : 83
    Points
    83
    Par défaut faire un va_start() dans une fonction contenant possiblement aucun paramètres
    Bonjour, merci par avance:

    J'ai une fonction déclarée ainsi:

    int fonction(...)

    elle sera donc appellée avec ou sans arguments.
    Je souhaite, dans cette fonction, récupérer les arguments s'il y en a.
    L'inconvénient est que je dois utiliser la fonction va_start() et lui dire sur quel parramètre je débute ma recherche. Hors, ici il n'y en a pas: (...)

    Comment dois-je faire?



    Au cas où je ne sois pas compris, je reformule autrement.
    Voici ce qu'on a d'habitude:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foo (char *fmt, ...)
    {
      va_list ap;
      int     d;
      char    c, *p, *s;
     
      va_start  (ap, fmt);
    Comment je fais si ma fonction foo est déclarée ainsi:

    EEEEEEEEEEEEEEeeeeeettttt il fait comment le va_start s'il y a plus son pote fmt les gôos?

    Cimer Gadmer

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Salut,

    C'est pas possible, par contre rien ne t'empeche d'avoir une fonction comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int foo(int unused, ...)
    et simplement ignorer la valeur de unused

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Points : 83
    Points
    83
    Par défaut
    Merci membre chevroné, bonne journée à toi chevalier.

  4. #4
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    À l'intérieur de ta fonction tu auras besoin de connaître le nombre de paramètres reçus et c'est ceux à quoi pourrais servir le premier paramètre.
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 160
    Points
    160
    Par défaut
    Si tu veux "masquer" l'utilisation de ce paramètre, tu peux toujours utiliser ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void function_full (int unused, ...)
    {
        va_list ap;
        va_start (ap,unused);
        /* ... */
        va_end (ap);
    }
     
    #define function(...) function_full(0, __VA_ARGS__)
    Par contre, cette utilisation dépend en partie de ton compilateur. Il me semble en effet que tous les compilateurs ne connaissent pas __VA_ARGS__.

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

Discussions similaires

  1. Comment faire un EXEC dans une fonction
    Par baime dans le forum Développement
    Réponses: 10
    Dernier message: 28/05/2014, 14h04
  2. Réponses: 10
    Dernier message: 18/06/2012, 18h51
  3. [Tableaux] Comment faire un tableau dans une fonction?
    Par Alexandrebox dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2008, 00h12
  4. faire un loop dans une fonction pipelined
    Par fatsora dans le forum Oracle
    Réponses: 4
    Dernier message: 28/03/2008, 16h42
  5. comment faire un offset dans une fonction ?
    Par tempo-lyon dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/10/2007, 11h15

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