我想知道是否可以使用断言宏显示完整的文件路径? 我无法在编译命令中指定完整文件路径,还有办法吗?
我的调试环境是linux / g ++
答案 0 :(得分:4)
您可以将以下宏选项添加到编译行中(可以根据您的环境轻松修改)
%.o: %.cpp
$(CC) $(CFLAGS) -D__ABSFILE__='"$(realpath $<)"' -c $< -o $@
然后你只需要这个就可以得到完整的路径:
#include <stdio.h>
int main()
{
printf(__ABSFILE__);
// will be expanded as: printf("/tmp/foo.c")
}
修改强>
甚至比这更好:以下规则就足够了!!!
%.o: %.cpp
$(CC) $(CFLAGS) -c $(realpath $<) -o $@
现在您可以使用__FILE__
宏:
#include <stdio.h>
int main()
{
printf(__FILE__);
// will be expanded as: printf("/tmp/foo.c")
}
答案 1 :(得分:0)
assert使用__FILE__
宏来获取文件名。它将扩展到编译期间使用的路径。例如,使用此程序:
#include <stdio.h>
int main(void)
{
printf("%s\n", __FILE__);
return 0;
}
如果我使用'gcc -o foo foo.c'进行编译并运行,我将得到此输出:
foo.c
但如果我使用'gcc -o foo /tmp/foo.c'进行编译并运行,我将获得此输出:
/tmp/foo.c