Не в стандартном C.
Препроцессор может быть реализован в виде отдельной программы, которая не знает объектных файлов, поэтому он не может быть встроенным макросом.
AТеоретически компилятор может создать символ с именем объектного файла, но он будет недействительным, как только пользователь переименует объектный файл.
Вы можете получить систему сборки для #define
имени объекта:
# Compile ${module}.c to ${module}.o
cc ${CPPFLAGS} ${CFLAGS} -DOBJNAME=${module}.o -c -o ${module.o} ${module}.c
но вопрос о переименовании все еще остается в силе.
(Это всего лишь фрагмент кода оболочки, но, я полагаю, его можно превратить в правило Makefile
).