Ce que le programmeur a écrit |
Ce qu'il aurait du écrire |
#define MAX 10; |
#define MAX 10 |
Cette erreur peut provoquer ou non une erreur de compilation à l'utilisation de la macro :
x = MAX;
aura pour expansion x = 10;;
,
ce qui est licite : il y a une instruction nulle derrière x = 10;
.
int t[MAX];
aura pour expansion int t[10;];
ce qui génèrera un message d'erreur.
Ce que le programmeur a écrit |
Ce qu'il aurait du écrire |
#define MAX = 10 |
#define MAX 10 |
Cette erreur sera généralement détectée à la compilation, malheureusement le message d'erreur sera émis sur l'utilisation de la macro, et non pas là où réside l'erreur, à savoir la définition de la macro.
Définition de la macro | paramètres | corps de la macro |
#define add(a,b) (a + b) |
a et b | (a + b) |
#define add (a,b) (a + b) |
aucun | (a,b) (a + b) |
#define CARRE(a) ((a) * (a))l'utilisation de
CARRE(x++)
aura comme expansion ((x++) * (x++))
et l'opérateur ++ sera appliqué deux fois.