Строки #define
являются , а не частью компилятора, это часть препроцессора , который выполняется перед компилятором.Строки, обрабатываемые препроцессором, не должны заканчиваться точкой с запятой.
Возьмем, к примеру, следующую строку:
#define narray 8;// array size;
Это создает макрос с именем narray
,Когда препроцессор работает, он заменяет все экземпляры narray
текстом замены, в данном случае 8;
.Как видите, наличие 8;
внутри выражения добавит точку с запятой там, где их не должно быть.