#include<conio.h> #include<stdio.h> #define abc 7 int main() { int abc=1; printf("%d",abc); getch(); return 0; }
почему эта программа выдает ошибку времени компиляции
Вы присваиваете 7=1, что недействительно. Поскольку вы определили abc как 7, препроцессор переводит строку:
7=1
abc
int abc=1;
до:
int 7=1;
Что является синтаксической ошибкой в C (мой gcc говорит синтаксическая ошибка перед числовой константой ).
gcc
Вы объявляете значение макроса "abc" как 7. Так что, если снова включить имя макроса как переменная, это даст ошибку.
рассмотрим следующее
значение abc равно 7. Так что будет обработано как 7 = 1. Так что это даст ошибку.
Вы определяете abc как 7.
7
Тогда int abc=1 превращается в int 7=1, что абсурдно.
int abc=1
int 7=1
Почему Вы это делаете?
Когда препроцессор заменяет abc на 7, следующая строка становится недействительной:
Идентификатор в C, не может быть просто числом.
Препроцессор C выполняет слепую замену abc на 7, что приводит к:
что явно является ошибкой.