Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro printf + flush

3 réponses
Avatar
Pim
Bonjour,

Je souhaite faire une macro qui
reprend les paramètres de printf (attention c spécial)
mais qui ajoute fflush(stout);
afin de flusher à chaque printf.

Comment s'y prendre?
A défaut d'une macro une routine.

Par avance, je vous remercie.

3 réponses

Avatar
JKB
Le 12-06-2010, ? propos de
Macro printf + flush,
Pim ?crivait dans fr.comp.lang.c :
Bonjour,



Bonjour,

Je souhaite faire une macro qui
reprend les paramètres de printf (attention c spécial)
mais qui ajoute fflush(stout);
afin de flusher à chaque printf.

Comment s'y prendre?
A défaut d'une macro une routine.

Par avance, je vous remercie.



Est-ce que ceci derait l'affaire ?

#define printf(...) ({ int _ios; _ios = fprintf(stdout, __VA_ARGS__);
fflush(stdout); _ios; )}

Personnellement, j'attaquerais par setvbuf()...

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
JKB
Le 12-06-2010, ? propos de
Re: Macro printf + flush,
JKB ?crivait dans fr.comp.lang.c :
Le 12-06-2010, ? propos de
Macro printf + flush,
Pim ?crivait dans fr.comp.lang.c :
Bonjour,



Bonjour,

Je souhaite faire une macro qui
reprend les paramètres de printf (attention c spécial)
mais qui ajoute fflush(stout);
afin de flusher à chaque printf.

Comment s'y prendre?
A défaut d'une macro une routine.

Par avance, je vous remercie.



Est-ce que ceci derait l'affaire ?



Groumphfff... Ferait !

#define printf(...) ({ int _ios; _ios = fprintf(stdout, __VA_ARGS__);
fflush(stdout); _ios; )}

Personnellement, j'attaquerais par setvbuf()...



J'oubliais, c'est une GNUerie. On peut aussi faire avec une fonction
à grands coups de stdarg, mais je vous laisse faire l'exercice.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Benoit Izac
Bonjour,

le 12/06/2010 à 15:48, Pim a écrit dans le message
:

Je souhaite faire une macro qui
reprend les paramètres de printf (attention c spécial)
mais qui ajoute fflush(stout);
afin de flusher à chaque printf.

Comment s'y prendre?
A défaut d'une macro une routine.



Non testé, merci de me communiquer ma note.

int
printff(const char *format, ...)
{
int ret;
va_list ap;

va_start(ap, format);
ret = vprintf(format, ap);
va_end(ap);
if (ret)
fflush(stdout);

return ret;
}

--
Benoit Izac