Zephyr (./5) :
Oui mais non, puisque j'imagine que le problème se trouve au moment où il doit appeler sa 2eme fonction. Si j'ai bien saisi, ça bloque ici :
void func1 (int a, ...)
{
// init va_args
func2 (/*comment écrire les arguments ici, puisqu'il y en a un nombre variable ?*/);
}
J'ai eu le même problème et j'ai du poster un topic sur yN il y a 5 ans (bonne chance pour le trouver
), mais de mémoire personne n'a proposé de solution et j'ai fini par contourner avec une méthode crade 
C'est exactement ça

Je vais essayer de trouver ton topic. Tu te souviens de la solution crade en question ?
squalyl (./6) :
Pen^2: en général une fonction a args variables est un wrapper sur la même fonction, mais qui utilise un va_list, du coup si tu veux un autre wrapper c'est plus facile de wrapper la fonction qui utilise déja un va_list
exemple:
void sprintf(char *buf, const char * format, ...)
{ va_list va;
va_start(va, format);
vsprintf(buf,format,va);
va_end(va);
}
du coup si tu veux wrapper sprintf, vaut mieux directement wrapper vsprintf
http://www.manpagez.com/man/3/vsprintf/
OK, je vois. Je vais regarder si un prototype de ce genre existe...

squalyl (./7) :
(cross, et je pense aussi qu'il faut passer par du crade, genre manipuler SP, ce qui ultra bof si le wrapper a des variables locales, et qui n'est pas portabe)
arg

Kevin Kofler (./8) :
En C/C++ standard, ce n'est pas possible de recréer des varargs à partir d'une va_list, c'est pour ça que les fonctions v* existent dans la stdio.
GCC permet de faire ça sous certaines conditions (assez contraignantes): http://gcc.gnu.org/onlinedocs/gcc/Constructing-Calls.html.
Merci, je vais jeter un œil, mais il se trouve qu'en plus mon code doit être portable
