Bonjour,
je souhaite développer une surcouche à printf, du type:
Je pense qu'il faut utiliser les va_list et autres mais comment faire ?Code:
1
2 void DISPLAY ( const s8* in_string, ... );
Merci de votre aide.
Version imprimable
Bonjour,
je souhaite développer une surcouche à printf, du type:
Je pense qu'il faut utiliser les va_list et autres mais comment faire ?Code:
1
2 void DISPLAY ( const s8* in_string, ... );
Merci de votre aide.
Je suis allée prendre le corps de la fonction de printf sur <stdio.c> :oops:
Et j 'ai recopié ...Code:
1
2
3
4
5
6
7
8
9
10
11
12 int printf (const char *format, ...) { va_list args; int retval; va_start (args, format); retval = vprintf (format, args); va_end (args); return retval; }
Pas très "pro" comme code "perso", hein ?
j'aurais voulu utilisé le "printf" mais bon ... ca marche comme ca, alors.
Par contre si quelqu'un peut me dire comment faire (sans recopier le corps de printf) ca m'interesse ...
vfprintf() est la fonction de base de la famille printf(), donc tout va bien. Evidemment, tu n'as pas le droit d'utiliser printf() comme nom de fonction. Voir la reponse a cette FAQ.
Et si je veux réutiliser ma fonction DISPLAY ??
En fait, on me demande des mots clés (comme dans un scenario):
doit appeler la sous fonctionCode:
1
2 void mafonction_diplay(const s8* in_string, ... );
??Code:void DISPLAY ( const s8* in_string, ... );
Dans ce cas, tu dois créer une variante de la fonction DISPLAY prenant en paramètre une va_list.
C'est-à-dire ? merci de m'éclairer un peu ... :oops:
Généralement, on ne doit pas faire de fonction prenant uniquement des paramètres variables.
La méthode conseillée, c'est faire une fonction qui prend une va_list en paramètre, et un wrapper qui prend des paramètres variables.
Par exemple, dans la bibliothèque standard: Pour la plupart des implémentations, printf() est juste un wrapper qui appelle vprintf().
J'ai trouvé une exemple ici http://www.developpez.net/forums/sho...d.php?t=430409
Super, merci à tous.