Bonjour,
Un bout de code qui ne marche pas :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.
Partager