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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
  #DEBUG: essai 'p1', 'p2'
  #DEBUG: essai 'p1', 'p2'
Strange. Je dirais même plus: pas terrible

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