Se ho un va_list so come estrarre tutti i suoi elementi:Come faccio a compilare un va_list
void printInts(int n,...)
{
va_list va;
va_start(va, n);
for(unsigned int i=0; i<n; i++)
{
int arg=va_arg(va, int);
printf("%d",arg);
}
va_end(va);
}
Così, quando io chiamo printInts (3,1,2,3) la va_list avere riempito di tutto i parametri.
Ma come faccio a compilare manualmente una va_list senza usare va_start? Voglio dire che voglio qualcosa di simile:
va_list va;
push_arg(va, int, 5); // And so on until I fill all parameters
...
ho bisogno di questo perché non v'è una funzione che accetta un va_list come argomento, e non so come riempire quel va_list di tutti i suoi parametri.
Il tipo 'va_list' non è in realtà una lista come tale, in realtà è spesso una specie di puntatore allo stack e' va_arg' modifica questo puntatore per puntare all'argomento successivo sullo stack. –
@JoachimPileborg: A volte non è un puntatore allo stack. –
Perché non vuoi usare 'va_start'? – szx