Pour toute macro générant des instructions, on recommande d'englober
les instructions générées dans la partie instruction d'un
do ... while (0).
Notre exemple s'écrit ainsi :
#define F(x) do { \
if (!f(x)) { printf("erreur\n"); exit(1); } \
} while (0)
et tous les problèmes précédents s'évanouissent.
Matthieu Moy
2017-02-08