Pour résoudre un problème je voulais m'inspirer de la fonction va_arg, car elle prend un type de donnée comme second argument, j'aimerai pouvoir faire la même chose. En cherchant j'ai trouvé que va_arg était une macro definie dans stdarg.h :
#define va_arg(v,l) __builtin_va_arg(v,l)
mais je ne trouve pas le prototype de __builtin_va_arg() je ne comprend pas quel peut être le type de donnée du second argument.
Je sais que certaines fonctions utilisent une marco du style :
#define ma_fonction_void(x,y) ma_fonction_ ## y(x)
ce qui permet d'écrire :
ma_fonction_void( 1000, long)
qui sera converti en par le préprocesseur en
ma_fonction_long( 1000)
évidement cela impose d'écrire autant de fonctions qu'il y a de types, et cela sera toujours insuffisant car on ne peut pas prévoir pour les types «*enum*» ou «*struct*» définit postérieurement par un autre utilisateur qui utilisera cette fonction.
Partager