Attention

La distinction entre macro avec et sans paramètre se fait sur le caractère qui suit immédiatement le nom de la macro : si ce caractère est une parenthèse ouvrante c'est une macro avec paramètres, sinon c'est une macro sans paramètre. En particulier, si après le nom de la macro il y a un blanc avant la parenthèse ouvrante, ça sera une macro sans paramètre. Exemple :
#define CARRE (a) a * a
Une utilisation de CARRE(2) aura comme expansion (a) a * a(2) ! Attention donc à l'erreur difficile à voir : la présence d'un blanc entre le nom d'une macro avec paramètres et la parenthèse ouvrante.



Matthieu Moy 2017-02-08