Можете ли вы заменить переменную #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