如何在C中不使用__FILE__打印文件名

时间:2014-06-18 07:54:12

标签: c linux

我想打印我项目中使用的文件名。 但是,如果我使用__FILE__,它会打印整个路径以及文件名,这在我的情况下很长,并且会干扰日志缩进。

任何人都可以帮助我在项目中使用通用参数打印文件名。

2 个答案:

答案 0 :(得分:2)

在您的C代码中,您可以使用表达式__FILE__代替basename(__FILE__);但是,这样做的缺点是每次都会调用basename

或者,使用类似

的命令编译path/foo.c
gcc -Wall -c -g -DBASE_FILE=\"foo\" path/foo.c

(您可以使用通用的make规则)

然后在代码中使用BASE_FILE代替__FILE__

使用GCC,您可以使用__BASE_FILE__代替__FILE__

答案 1 :(得分:-1)

考虑使用basename。我认为预处理器不会给你提供比__FILE__更多的东西。