7Fermer9
GodzilLe 30/05/2014 à 10:28
Folco (./3) :
Merci bien, c'est une possibilté, peut-être bien la seule d'ailleurs.
Etonnant, qu'il faille implémenter une fonction qui prenne une va_list en argument pour régler ce problème, plutôt que de prévoir un mécanisme côté appelant pour ce genre de chose...

C'est comme cela que ça fonctionne en interne.

Si tu regarde la fonction printf, elle récupère la liste variable d'argument dans un va_list et appelle vprintf (ou vfprintf suivant les implémentations)

vprintf qui a pour prototype

int vprintf(const char *format, va_list ap);

C'est la seule solution propre. Tout ce que fait va_start est de mettre l'adresse du premier argument dans un pointeur qui est va_list.

va_list est un format opaque mais c'est juste un "pointeur" (Bon ca peux etre un peu plus complique suivant les ABIs, mais c'est le principe)

edit: bon squalyl exipliquait ca aussi bien en fait je n'avions point vu.