printf et argments en linux
Bonjour,
Désolé si j'aborde un sujet déjà traité, mais ma recherche sur le forum n'a rien donné.
J'ai un cas concret sur Linux en C avec printf en 2 lignes.
Code:
1 2 3 4 5 6 7 8 9
|
#include <stdio.h>
int main(int nArgCount, char **sArguments) {
printf("#DEBUG: essai '%s', '%s'\n", "p1", "p2");
printf("#DEBUG: essai '%s', '%s'\n", "p1");
return 0;
} |
A l'exécution j'ai comme affichage:
Code:
1 2 3
|
#DEBUG: essai 'p1', 'p2'
#DEBUG: essai 'p1', 'p2' |
Strange. Je dirais même plus: pas terrible :aie:
Le compilateur est gcc 4.2.3 (un récent).
Là où je veux en venir, c'est que j'ai écrit une fonction qui utilise stdarg.h (avec les f(a/u)meuses macros va_start, va_arg et va_end) et je cherche un moyen simple de déterminer le nombre d'arguments passés à la fonction (définie avec quelques paramêtres et '...').
L'idée étant de détecter d'anciennes valeurs passées afin de ne prendre en compte que les nouvelles (ie: dans mon exemple l'argument 'p2' du 2è printf serait détecté comme une ancienne valeur).
J'ai quelques menues idées, mais voudrais savoir comment vous procédriez
PluX59