Переменная 'a' не разрешается макросом препроцессора, если функция fun() определена выше main(), но работает нормально, если определено ниже main().Переменная необъявленная ошибка при использовании внутри функции
#include <stdio.h>
void fun()
{
printf("%d",a);
}
int main()
{
#define a 5
fun();
return 0 ;
}
В чем причина этого? И как мы можем заставить его работать, чтобы мне не пришлось переместить определение функции fun().
Компилятор читает сверху вниз, поэтому в грубых выражениях необходимо увидеть определение 'a' перед его использованием. Переместите '# define 5' перед' fun() '. – Peter
'a' не является переменной. Пожалуйста, прочитайте, как работает препроцессор и что делает '# define'. – Olaf
И даже если 'a' является переменной, прочитайте о сфере видимости переменных. Все, что вы определяете в 'main', не отображается в' fun'. – Gerhardh