我想创建一个递归宏,它将创建“下一个”类。

例:

#define PRINTME(indexNum) class m_##(indexNum+1) { }
indexNum + 1被评估为int,并且不会连接到类名。

在连接之前,如何使编译器对此进行评估?

最佳答案

简单的答案是您不能。预处理器通常处理文本和 token 。唯一的位算术是在#if#elif指令中执行的。

而且,宏扩展不是递归的。在扩展过程中,正在扩展的宏被禁用,并且不可用于进一步的替换。

关于c++ - 宏增加值,然后串联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11717508/

10-11 21:09