[英]how to append to __FILE__ at preprocessor time and include the result
我想包括component.h.gen
从component.h
。
我已经看到我可以将__FILE__
与#include
一起使用,并且如果没有标题保护,则会导致递归包含。
有没有办法附加C字符串文字并包含结果? 到目前为止,这是我尝试过的:
#define CAT_IMPL(s1, s2) s1##s2
#define CAT(s1, s2) CAT_IMPL(s1, s2)
#define DO_IT CAT(__FILE__, ".gen")
#include DO_IT
但这会导致包括文件本身在内的文件具有相同的递归- ".gen"
部分未使用-我在MSVC中收到以下警告:
警告C4067:预处理指令后出现意外的标记-预期换行
有没有可以与gcc / clang / msvc一起使用的解决方案?
请注意,我打算在数百个(甚至数千个)文件中使用它,并且我想通过复制粘贴相同的代码来简化我的工作,这就是为什么我要使其正常工作。
不幸的是,这是不可能的:
__FILE__
扩展为字符串; 您不能取消字符串的字符串化。 因此,仅添加字符串的“其余”然后对结果进行字符串化的技术不可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.