C中当前翻译单元编译的对象名称

shu*_*alo 1 c

有一个宏或一个全局变量,通过它我可以了解当前翻译单元将在C中使用的目标文件的名称?我只知道源文件宏.

谢谢.

Fre*_*Foo 5

不在标准C.

预处理器可以实现为不了解目标文件的单独程序,因此它不能是内置宏.

理论上,编译器可以生成带有目标文件名的符号,但只要用户重命名目标文件,该编号就会失效.

您可以将构建系统获取到#define对象名称:

# Compile ${module}.c to ${module}.o
cc ${CPPFLAGS} ${CFLAGS} -DOBJNAME=${module}.o -c -o ${module.o} ${module}.c
Run Code Online (Sandbox Code Playgroud)

但关于重命名的观点仍然存在.

(这只是一段shell代码,但Makefile我认为它可以变成规则.)