Questions sur les macro-fonctions

Questions sur les macro-fonctions

par Senellart Raphaël,
Nombre de réponses : 1

Bonjour suite au cours de ce matin, je me demandais la nécessité des parenthèses dans le " code " des macros fonction  ?

exemple : #define ADD(x,y) ((x)+(y))

En réponse à Senellart Raphaël

Re: Questions sur les macro-fonctions

par Delestre Nicolas,
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.