Можете ли вы extern переменную #define в другом файле?

abc.c содержит переменную
#define NAME "supreeth"

может extern переменная NAME на def.c?

3 ответов


Если у вас #define NAME "supreeth" в abc.c, у вас наверняка может быть переменная extern с тем же именем в другом файле def.c, это касается компилятора. Если вы подразумеваете какую-то зависимость между этими двумя, эта зависимость/связь не произойдет. Очевидно, это сбивает с толку и плохая идея сделать что-то подобное.


в коде NAME не является переменной. Это символ предварительного процессора, что означает текст NAME будет заменен везде на входе со строки "supreeth". Это происходит в каждом файле, поэтому нет смысла говорить о том, что он "внешний".

если конкретный файл C компилируется без этого #define, использование NAME останется как есть.


вы не можете использовать extern С макро. но если вы хотите, чтобы ваш макрос видели многие файлы c

поместите определение макроса

#define NAME "supreeth"

в заголовочном файле, как def.h

затем включите свой def.h в коде C, а затем вы можете использовать свой макрос в файле C во всех других файлах C, если вы включаете def.h