stdarg.h va_list et parametres
Bonjour,
Il y a quelque temps, je suis tombe sur un manual dans lequel il etait explique qu'il etait possible de passer un va_list (ou va_list*, ma memoire fait defaut) a une fonction normale afin de lui passer les arguments voulus.
Typiquement:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#include <stdio.h>
#include <stdarg.h>
void foo(const char *s, int i) // on passerait donc un va_list au lieu de ces parametres
{
printf("%s - %d\n", s, i);
}
void bar(void (*f)(va_list), ...)
{
va_list ap;
va_start(ap, f);
f(ap);
va_end(ap);
}
int main(void)
{
bar(foo, "i am a string", 42);
return 0;
} |
Je en me souviens plus ou j'avais vu cela, et je n'arrive pas a retrouver quoi que ce soit dessus.
L'idee de base est que l'on peut transformer une liste de parametres en un va_list, du coup il devrait etre posible de retourner le processus.
si vous disposez d'informations relative a ce sujet, n'hesitez pas a repondre!