имя объекта, скомпилированного текущим модулем перевода в C - PullRequest
1 голос
/ 16 февраля 2011

существует ли макрос или глобальная переменная, с помощью которых я могу узнать имя файла объекта, для которого будет использоваться текущий модуль перевода в C? Мне известен только макрос исходного файла.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 16 февраля 2011

Не в стандартном C.

Препроцессор может быть реализован в виде отдельной программы, которая не знает объектных файлов, поэтому он не может быть встроенным макросом.

AТеоретически компилятор может создать символ с именем объектного файла, но он будет недействительным, как только пользователь переименует объектный файл.

Вы можете получить систему сборки для #define имени объекта:

# Compile ${module}.c to ${module}.o
cc ${CPPFLAGS} ${CFLAGS} -DOBJNAME=${module}.o -c -o ${module.o} ${module}.c

но вопрос о переименовании все еще остается в силе.

(Это всего лишь фрагмент кода оболочки, но, я полагаю, его можно превратить в правило Makefile).

0 голосов
/ 16 февраля 2011

Я не думаю, что это существует. Единственное, что я могу придумать, это то, что вы можете использовать макрос ## glue для объединения __FILE__ с ".o" ... Но даже это не совсем то, что вы просите, так как вы получите foo.co

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...