Erreur avec les effets de bord

Le corps d'une macro peut comporter plusieurs occurrences d'un paramètre. Si à l'utilisation de la macro on réalise un effet de bord sur le paramètre effectif, cet effet de bord sera réalisé plusieurs fois. Exemple :
#define CARRE(a) ((a) * (a))
l'utilisation de CARRE(x++) aura comme expansion ((x++) * (x++)) et l'opérateur ++ sera appliqué deux fois.



Matthieu Moy 2017-02-08