Fonction à nombre paramètres variables

Fonction à nombre paramètres variables - C - Programmation

Marsh Posté le 23-03-2005 à 15:52:28    

Bonjour,
  Je voudrais savoir s'il y avait un moyen d'utiliser une fonction à nombre de paramètres variables sans utiliser stdarg.h:
  int my_func(char *a1, ...);
 
 
Un soft que j'utilise (LoadRunner) permet de faire des scripts/programmes suivant le C ANSI mais ne supporte pas cette librairie.
 
Ca rendrait la vie beaucoup plus facile si il y avait une méthode pour le faire. Apres avoir cherché, j'en suis au stade de récupéré les adresses des paramètres dans un pointeur et d'augmenter ce pointeur de la valeur necessaire (taille du param courant) pour accéder au suivant...  :heink:  
Mais bon, ca me parait un peu lourd.
 
 
Merci

Reply

Marsh Posté le 23-03-2005 à 15:52:28   

Reply

Marsh Posté le 23-03-2005 à 15:55:03    

T'as passé un tableau de pointeur en paramètre de ta fonction ? Chaque pointeur pointant vers un argumant de la fonction ?


---------------
Slack powa | http://www.racingpneu.com
Reply

Marsh Posté le 23-03-2005 à 15:58:34    

non.
ma fonction serait déclaré
int nom_de_la_fonction (char *parm1, ...)
 
Le premier argument c'est un bete char *
les points de suspension signifie que l'on peut rajouter autant de paramètre que l'on désire (ca serait des char *). Seulement ils n'ont pas de nom. Normalement ils sont récupérables avec des macros déclaré dans stdarg.h.
 
J'y ai jeté un coup d'oeil mais la définition de ces macros ne m'inspire pas confiance. Je doute qu'en les recopiant ca marche.

Reply

Marsh Posté le 23-03-2005 à 18:31:17    

le nombre variable de param est interessant quand on doit transmettre des params au main. mais dans ton cas c'est stupide... Passe un pointeur d'une liste dynamique. Apres dans ta fonction, il ne te reste plus qu'a traiter la liste dynamique...

Reply

Marsh Posté le 23-03-2005 à 19:00:22    

moi23372 a écrit :

le nombre variable de param est interessant quand on doit transmettre des params au main. mais dans ton cas c'est stupide... Passe un pointeur d'une liste dynamique. Apres dans ta fonction, il ne te reste plus qu'a traiter la liste dynamique...


Oui ca serait peut etre plus facile mais c'est pas ca que je veux faire [:itm]
Si c'est pas possible tant pis... je ferais autrement mais bon...


Message édité par l0ky le 23-03-2005 à 19:00:43
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed