是否有一个宏或全局变量,通过它我可以了解当前翻译单元将在C中使用的目标文件的名称?我只知道源文件宏。
感谢。
答案 0 :(得分:5)
不在标准C中。
预处理器可以实现为不了解目标文件的单独程序,因此它不能是内置宏。
理论上,编译器可以生成带有目标文件名的符号,但只要用户重命名目标文件,该编码就会失效。
您可以将构建系统设置为#define
对象名称:
# Compile ${module}.c to ${module}.o
cc ${CPPFLAGS} ${CFLAGS} -DOBJNAME=${module}.o -c -o ${module.o} ${module}.c
但关于重命名的观点仍然存在。
(这只是一段shell代码,但我认为它可以转换为Makefile
规则。)
答案 1 :(得分:0)
我认为这不存在。我唯一能想到的就是你可以使用## glue macro将__FILE__
与“.o”结合起来......但即便如此,这并不是你要求的,因为你会得到foo。共