Fonction à nombre paramètres variables - C - Programmation
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 ?
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.
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...
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
Si c'est pas possible tant pis... je ferais autrement mais bon...
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...
Mais bon, ca me parait un peu lourd.
Merci