我想定义一个包含另一个头文件的宏,如下所示:
#define MY_MACRO (text) #include "__FILE__##_inline.inl"
因此,当预处理器解析文件person.h时,MY_MACRO(blahblah)扩展为
#include"person.h.inline.inl"
关于如何做到这一点的任何提示?
ken*_*ytm 14
#define除非您运行预处理器两次,否则无法使用构造其他预处理程序指令.
但是在你的情况下,即使运行预处理器两次也无济于事,因为它#include必须是表单的单个字符串"..."或<...>.
Phi*_*ipp 10
您无法使用,__FILE__因为它已经被引用,并且#include不支持字符串连接.但您可以在以下后使用宏#include:
#define STRINGIZE_AUX(a) #a
#define STRINGIZE(a) STRINGIZE_AUX(a)
#define CAT_AUX(a, b) a##b
#define CAT(a, b) CAT_AUX(a, b)
#define MY_MACRO(file, name) STRINGIZE(CAT(file, CAT(name, _inline.inl)))
#include MY_MACRO(aaaa, qqq)
您应该使用等效的Boost.Preprocessor宏代替CAT和STRINGIZE防止全局命名空间污染.
| 归档时间: | 
 | 
| 查看次数: | 14416 次 | 
| 最近记录: |