Fonction C a nombre variable de parametres
Fermé
tl_kiki
Messages postés
5
Date d'inscription
jeudi 18 octobre 2001
Statut
Membre
Dernière intervention
8 août 2002
-
8 août 2002 à 11:03
siteduzero.com - 16 nov. 2009 à 17:46
siteduzero.com - 16 nov. 2009 à 17:46
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
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:
- Fonction C a nombre variable de parametres
- Fonction si et - Guide
- Parametres de mon ordinateur - Guide
- Paramètres de confidentialité - Guide
- Nombre de jours entre deux dates excel - Guide
- Ascii nombre de caractères - Guide
4 réponses
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;
}
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;
}
pour ceux qui veulent un tuto complet:
http://www.siteduzero.com/tutoriel-3-93219-les-fonctions-a-nombre-variable-de-parametres.html
http://www.siteduzero.com/tutoriel-3-93219-les-fonctions-a-nombre-variable-de-parametres.html
Marden
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
210
8 août 2002 à 11:20
8 août 2002 à 11:20
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.
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.