CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Prob fct à nb variable de paramètres

N4k1m
N4k1m
Niveau 6
02 avril 2011 à 23:46:48

Bonjour / Bonsoir à tous,

Je rencontre actuellement un petit problème avec les fonctions à nombre variable de paramètres. J'ai également posé ma question sur un autre site dont la mise en page pour le code est bcp meiux que les messages sur JV donc je me permets de poster le lien vers mon problème :

http://www.siteduzero.com/forum-83-631693-p1-probleme-fonction-a-nb-variable-de-parametres.html

Merci bcp à tous ceux qui auront pris la peine de lire mon problème et de s'y pencher pour m'aider dans mon projet ;)
Nakim

godrik
godrik
Niveau 30
03 avril 2011 à 00:10:27

En regle general, ne fais pas de fonction a nombre variable d'argument. C'est la meilleur facon de se tirer une balle dans le pied.

Deplus, le code que tu fournis n'es pas correctement parenthese.

N4k1m
N4k1m
Niveau 6
03 avril 2011 à 00:24:29

Effectivement il y a des erreurs de parenthèses mais c'est simplement une faute de recopiage, elles ne figurent pas dans mon code ;)

Merci du conseil, j'éviterais donc à l'avenir ;)

La surcharge des fonctions (c++) me manque, cela fait un petit temps que j'avais plus touché au c :p

godrik
godrik
Niveau 30
03 avril 2011 à 00:27:13

pour faire de la surcharge de fonction en C. On fait comme le compilateur C++, on fait plusieurs fonctions :)

void print (char* );
void print_i (int );
void print_c (char );
void print_d (double );

DreamsIayers
DreamsIayers
Niveau 8
03 avril 2011 à 18:13:39

Pourquoi utiliser les va_args alors que tu prends toujours le meme nombre de parametre ?

dnob700
dnob700
Niveau 10
03 avril 2011 à 19:58:49

Je ne sais pas pourquoi ta fonction ressoit trois fois la même valeur. Elle devrait recevoir trois fois une valeur différente. Mais ce que tu fait n'est pas correcte quand même, car je suis presque certain que l'ordre d'évaluation des arguments n'est pas spécifié en C. Donc tu ne sais pas lequel des va_arg est exécuté en premier, etc. Ce qui fait que les trois arguments peuvent être lu dans n'importe quelle ordre (celà, dit, je suspecte un bgu d'optimisation du compilo qui fait que c'est trois fois la même valeur qui est lue). Prends trois variables temporaire, charge dans le bon ordre les arguments de ta fonction, puis passe les à ta sous-fonction.

Cela dit, dreamslayers a raison, ce n'est pas un bon cas d'utilisation des fonctions a nombre variable d'argument si tu reçoit un très grand nombre d'argument qui ont toujours le même sens (chacun d'eux, d'appel en appel). Usuellement les fonctions à nombre variable d'arguments reçoivent soit pleins d'arguments tous du même type mais on ne sais pas combien à l'avance (avec un premier argument qui est un int) ou alors des arguments dont le type peut varier à chaque appel (dans le genre de ce que fait printf). Là, tu devrais plutôt avoir des fonctions différentes qui sont appelées selon la valeur de "mode" (et donc mode n'est pas passé à la fonction).

DreamsIayers
DreamsIayers
Niveau 8
03 avril 2011 à 21:22:08

Comme dit ci dessus, la fonction printf utilise a juste titre les VA args suivant la chaine de formatage qu'elle recoit. Dans tout les cas, les va args sont dangereux a utiliser, car d'un cote, tu laisses libre cours a l'utilisateur d'en mettre ou non (Ce qui dans ton cas n'est pas un avantage car tu prends 7 parametres de toute maniere, qu'il y'en ait ou non) et tu empeches le compilateur de savoir si le programme va provoquer une erreur suivant le nombre de parametres.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment