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