Можете ли вы заменить переменную #define в другом файле?
Например, abc.c содержит переменную
#define NAME "supreeth"
Может ли extern переменная NAME в def.c?
Ответ 1
Если у вас есть #define NAME "supreeth" в abc.c, вы можете иметь переменную extern с тем же именем в другом файле def.c, это касается компилятора. Если вы подразумеваете какую-то зависимость между этими двумя, эта зависимость/связь не произойдет.
Очевидно, что это сбивает с толку и плохая идея сделать что-то вроде этого.
Ответ 2
В вашем коде NAME нет переменной. Это символ препроцессора, что означает, что текст NAME будет заменен всюду на входе строкой "supreeth". Это происходит в каждом файле, поэтому не имеет смысла говорить о том, что он является "внешним".
Если конкретный файл C скомпилирован без этого #define, любое использование NAME останется как есть.
Ответ 3
Вы не можете использовать extern с макросом. но если вы хотите, чтобы ваш макрос просматривался многими файлами C
введите определение макроса
#define NAME "supreeth"
в файле заголовка, например def.h
затем включите def.h в свой код C, а затем вы можете использовать свой макрос в своем файле C во всех других файлах C, если вы включили def.h