The __FILE__
and __LINE__
宏内置于C预处理器,通常用于打印带有文件名和行号的调试输出。我需要类似的东西,但只有路径末尾的目录名称。例如,如果我的代码位于:
/home/davidc/some/path/to/some/code/foo/bar 我需要一个宏,如果代码位于 /home/davidc/some/path/to/some/code 中,它只会给我“bar” /foo/bee 那么我需要它给我“bee”。
有什么想法吗? (顺便说一句,这是针对 C++ 应用程序的)。
更新:需要明确的是,我正在寻找一个宏,它将在编译时为我提供一个包含目录名称的字符串,我不想在运行时进行任何字符串处理。
如果您使用的是 GNUmake
要构建您的项目,那么您可能可以执行以下操作:
%.o: %.cpp
$(CC) $(CFLAGS) -D__DIR__="$(strip $(lastword $(subst /, , $(dir $(abspath $<)))))" -c $< -o $@
这一定是我很长一段时间以来在 Makefile 中想到的最可怕的事情了。我认为您不会在编译器的范围内找到一种快速或干净的方法来执行此操作,因此我会寻找巧妙的方法将信息注入到编译过程中。
祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)