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 : 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
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!