2013-04-29 3 views
10

Например abc.c содержит переменнуюМожете ли вы заменить переменную #define в другом файле?

#define NAME "supreeth" 

Может Экстерн в def.c переменную NAME?

+1

Определение - это препроцессорная директива. При компиляции кода он заменяется встроенным. Вам нужно будет определить его в файле header (include). –

ответ

1

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

8

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

положить макроопределения

#define NAME "supreeth" 

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

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

+0

Что возможно? Нет переменной, и понятие «extern» не применяется. –

+0

Я не имел в виду использование extern. Я могу определить его макрос в файле заголовка, тогда он может видеть его из своих C-файлов. может быть, я должен быть более конкретным, я обновлю свой ответ – MOHAMED

14

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

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

Смежные вопросы