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

[Résolu]
Signaler
Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
-
Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
-
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

Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
3
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*/
}
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
2
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