[gull] cours C++

Marc Mongenet marc.mongenet at gmail.com
Thu Mar 2 14:16:12 CET 2006


2006/3/2, Leopoldo Ghielmetti <leopoldo.ghielmetti at a3.epfl.ch>:
> Je préfère classer les macros en deux categories principales, les
> procedures et les fonctions.
>
> Les procedures sont celles qui se comportent comme n'importe quelle
> fonction C qui ne retourne pas de valeur et je les entoure par
> do{...}while(0) et les fonctions qui retournent des valeurs et qui sont
> simplement entourées par (...).
>
> Donc la classique MAX est une fonction car elle retourne une valeur et
> elle est simplement entourée de ():
> #define MAX(a,b) ((a)>(b)?(a):(b))
>
> La macro précédente MA_MACRO est une procédure car elle ne retourne pas
> de valeur, donc je l'entoure de do{}while(0).

C'est malin mais ça me paraît délicat à utiliser. En effet,
certaines macros modifient les paramètres et d'autres pas.
À l'inverse certaines macros sont utilisables dans des expressions
et d'autres pas.
Je pense que je serais vite embrouillé si je devais maintenir ceci.

Marc Mongenet



More information about the gull mailing list