Problème de paramètres variables et références dans une fonction
Bonjour,
Un bout de code qui ne marche pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| void foo(int& i, ...)
{
va_list ap;
va_start(ap, i);
printf("%d\n", va_arg(ap, int));
va_end(ap);
}
int main()
{
int j=0;
pack(j, 15);
return 0;
} |
Le problème semble venir de la référence i, comme si le va_start ne le "détectait" pas comme paramètre et se met à pointer n'importe où (à la place du paramètre suivant), ce qui affiche une valeur absurde dans le printf pour le 2nd paramètre.
Si i n'est pas une référence ça marche très bien. Evidemment on peut contourner le problème avec un pointeur à la place de la référence mais j'aimerais connaître la raison de cette erreur.