如果直接跟随形成有效标识符的字符,则不扩展宏变量

时间:2018-04-18 19:35:42

标签: c++ c macros c-preprocessor

给出像

这样的预处理器宏
#define DECLARE(NAME) \
    int NAME;         \
    int NAME_2

Name_2表示新标识符。是否可以展开Name,以便

DECLARE(x);

成为

int x;
int x_2;

2 个答案:

答案 0 :(得分:4)

您可以使用##胶水:

#define DECLARE(NAME) \
   int NAME;         \
   int NAME##_2

答案 1 :(得分:3)

宏的最后一行可能是

int NAME##_2

会这样做。 ## 连接令牌。