Un #define n'est pas une déclaration

Ce que le programmeur a écrit
Ce qu'il aurait dû écrire
#define MAX 10;
#define MAX 10

Cette erreur peut provoquer ou non une erreur de compilation à l'utilisation de la macro :

-
L'utilisation x = MAX; aura pour expansion x = 10;;, ce qui est licite : il y a une instruction nulle derrière x = 10;.
-
L'utilisation int t[MAX]; aura pour expansion int t[10;]; ce qui génèrera un message d'erreur.



Matthieu Moy 2017-02-08