Fonction prenant un type comme argument (ex : va_arg ())

Résolu
vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 - 16 août 2006 à 13:18
vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 - 16 août 2006 à 18:10
Bonjour, je voudrais comment faire en C une fonction qui prend un type en argument (char int  ...) comme le fais la fonction va_arg (). Merci de vos réponse.

2 réponses

vinc1008881 Messages postés 257 Date d'inscription dimanche 22 août 2004 Statut Membre Dernière intervention 29 septembre 2010 3
16 août 2006 à 18:10
merci D@muria pour ce code, il m'as permis de trouver par moi même la solution en m'inspirant de va_arg

#define sizeofbis(type) ({ \      /*macro permettant de calculer la taille de l'argument*/
    sizeof (type); \
})

int main (){
    printf ("%d",sizeofbis(double));      /*affiche bien 8*/
}
3
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
16 août 2006 à 13:32
Je n'ai pas la réponse à ta question mais pour info va_arg n'est pas une fonction mais une macro :

#define _INTSIZEOF(n)   ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
#define va_arg(ap,t)    ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )

D@runia
0