Questions sur les macro-fonctions

Re: Questions sur les macro-fonctions

par Delestre Nicolas,
Nombre de réponses : 0
Bonjour,
C'est en fait pour éviter d'avoir des problèmes avec les priorités d'opérateurs arithmétiques et des problèmes de compilation.
 
Si nous n'avions pas de parenthèse :
#define ADD(x,y) x+y
l'interpréteur de macro produirait à partir de 2*ADD(3,4) le code C 2*3+4 alors que l'on veut en fait que le C évalue l'expression 2*(3+4).
 
Il en est de même avec les parenthèses autour de x et y. Si nous avions le code :
#define ADD(x,y) (x+y)
l'interpréteur de macro produirait à partir de ADD(2,+3) le code C (2++3) qui ne compile pas alors que ((2)+(+3)) compile.