1) Pourquoi les fonctions vprintf prennent-elles en paramètre un argument de type va_list au lieu de va_list * ?
1bis) Est-ce que ça aurait pu marcher aussi avec un argument de type va_list * ? (voir ci-dessous)
2) Quand on travaille dans un environnement où on ne peut pas utiliser d'allocation dynamique est-ce qu'il est dangereux d'utiliser ces fonctions/macros (va_start etc...) ? (est-ce que par exemple elles vont faire des malloc() ?)
Merci.
* Par exemple dans le K&R, il y a un exemple du genre :
s'aurait pu être :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void erreur(const char *format, ...) { va_list args; va_start(args, format); vprintf(format, args); va_end(args); }
si vprintf() prenait un pointeur non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void erreur(const char *format, ...) { va_list args; va_start(args, format); vprintf(format, &args); va_end(args); }
Partager