Questions sur les listes variables d'argument
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 :
Code:
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);
} |
s'aurait pu être :
Code:
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 ?