Le backslash en fin de ligne ne change rien à cela, car c'est toujours le point-virgule (ou dans certains cas, la virgule) qui sépare les instructions.
Le backslash en fin de ligne ne change rien à cela, car c'est toujours le point-virgule (ou dans certains cas, la virgule) qui sépare les instructions.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.









Oui, je suis sur qu'on ne peut pas definir une macro definissant des macros.
L'utilisation de \ en fin de ligne permet de definir une macro sur plusieurs lignes.
L'utilisation de do {} while(0) permet de definir une macro comportant plusieurs instructions mais visible de l'exterieur comme une seule (suivant le nombre d'instructions, tu la coupes souvent en plusieurs lignes avec \). Cad qu'elle ne pose pas de problemes dans les contextes (if (cond) macro(); else) qui posent problemes
si tu utilises un bloc sans le savoir.
L'utilisation de l'operateur , permet de definir une macro qui est une expression et qui en evalue plusieurs (pas de if -- mais on a ?: -- ou autre structures de controle).
Aucune de ces techniques n'est recente (je suis sur des les avoir utilisees au debut des annees 90).
Merci bien
Je me suis tourné vers autre chose, du genre un système de traces sous forme de module (un couple .h / .c qui définit quelques fonctions de base pour tracer l'execution de mon programme, et une seule macro).
Partager