Bonjour,

Un bout de code qui ne marche pas :
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;
}
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.