En fait, si tu regarde le prototype de la fonction vsnprintf qui est utilisé dans l'exemple, tu verra que:
ça n'est pas: vsnprintf(str, size, format, ...)
c'est: vsnprintf(str, size, format, va_list ap)
Donc dans ton cas, il ne faut pas définir: void get_data_nesteed2(const char *pfmt, ...)
mais ceci: void get_data_nesteed2(const char *pfmt, va_list args)
avec le code a simplifier en conséquence.
Si tu ne peut pas changer le prototype de get_data_nested2, il va falloir penser le problème autrement, car il ne me semble pas possible de transmettre des variadics autrement que par l'intermédiaire du type va_list (si c'était possible, il n'y aurais pas 2 fonctions snprintf et vsnprintf pour faire la même chose)
# ça marche pas tout a fait comme ça...
Posté par Christophe --- . En réponse au message Fonctions variadiques imbriques. Évalué à 2.
Bonjour,
En fait, si tu regarde le prototype de la fonction
vsnprintfqui est utilisé dans l'exemple, tu verra que:vsnprintf(str, size, format, ...)vsnprintf(str, size, format, va_list ap)Donc dans ton cas, il ne faut pas définir:
void get_data_nesteed2(const char *pfmt, ...)mais ceci:
void get_data_nesteed2(const char *pfmt, va_list args)avec le code a simplifier en conséquence.
Si tu ne peut pas changer le prototype de
get_data_nested2, il va falloir penser le problème autrement, car il ne me semble pas possible de transmettre des variadics autrement que par l'intermédiaire du typeva_list(si c'était possible, il n'y aurais pas 2 fonctionssnprintfetvsnprintfpour faire la même chose)