【发布时间】:2012-11-09 05:28:07
【问题描述】:
观察以下程序:
#include __FILE__
main(){}
预处理器陷入无限递归,包括自身内部的副本并抱怨 main() 已被定义。
如果我可以使用宏来包含文件,
我可以根据__FILE__ 导出文件名并包含它吗?
例如,我想在 "foo.cpp" 中包含 "foo.h",但从 __FILE__ 派生它。
可以用预处理器完成吗?
【问题讨论】:
-
不能编辑文件名,相邻字符串文字的拼接发生在翻译的第6阶段,但是预处理发生在第4阶段,所以不能使用字符串拼接。这意味着不可能从
__FILE__构建一个可以被预处理器包含的文件名。
标签: c++ macros include c-preprocessor