Fonction C a nombre variable de parametres

tl_kiki Messages postés 5 Statut Membre -  
 siteduzero.com -
J'aimerais quelques renseignement sur les va_list en C.
Peut on recuperer le nombre de parametres?
Dans le code d'1 fonction a nombre de parametres variable peut on recuperer tous les parametre pour les stocker dans un tableau....

Merci
A voir également:

4 réponses

alex
 
salut

les fonctions a parametres variables sont tres agreables a utiliser.

Je crois que c est a toi de savoir le nombre et le type des parametres passes
a cette fonction.

Pour cela il ne faut pas oublier que le premier argument est obligatoire
pourquoi ne pas l'utiliser comme repere exemple

void ma_fonction(int repere,...)
{
va_list chaines;

va_start(chaines,repere);

switch(repere)
{
case 1:
//si le 1er arg vaut 1 alors je sais
//qu'il y aura deux autres arg a cette fonctions
//et que leur type est int et char*
int prem;
char* deus;
prem = va_arg(chaines,int);
deus = va_arg(chaines,char*);
...
break;

case 2:
//si le premier arg vaut 2 il y aura trois
//argument de type char* int char*
char * prem;
int deus;
char * trois;
prem = va_arg(chaines,prem);
deus = va_arg(chaines,deus);
trois = va_arg(chaines,trois);
...
break;

....
}
va_end(chaines);
return;
}
5
siteduzero.com
 
pour ceux qui veulent un tuto complet:

http://www.siteduzero.com/tutoriel-3-93219-les-fonctions-a-nombre-variable-de-parametres.html
4
Marden Messages postés 1075 Statut Membre 210
 
La réponse est "oui", mais je ne saurais de donner beaucoup de détails. Je me souviens avoir utilisé le mécanisme "va_list" pour une fonction d'édition de messages d'erreur, avec nombre d'arguments variable (ce mécanisme est implicitement employé dans les ordres "printf()" ou similaires).
Si mes souvenirs sont bons, le mécanisme s'applique au travers du pré-processeur, à la manière de argc,argv[] (= table d'adresses des arguments), mais l'implémentation varie avec les machines.
1
ALi
 
salut all
j'ai un exposé en c le 19/mars/2007 sur "Les Fonction un Nombre d’Argument Variable" aidé moi svp
aidé moi svp le plus vite posible :)
merci
1