我有类似的东西:
#define NBR 42
#define THE_ANS_IS theAnsIsNBR
目前第二个宏正如预期的那样扩展为'theAnsIsNBR',但我想将它扩展为'theAnsIs42'我不确定它是否可能!?
答案 0 :(得分:2)
#define Paste(x, y) x##y
#define Expand(x, y) Paste(x, y)
#define NBR 42
#define THE_ANS_IS Expand(theAnsIs, NBR)
答案 1 :(得分:1)
#define _CONCAT(x,y) x ## y
#define CONCAT(x,y) _CONCAT(x,y)
#define NBR 42
#define THE_ANS_IS CONCAT(theAnsIs, NBR)
这是有效的,因为##
连接了两个令牌。问题是,它们不会首先扩展。但是在它们上调用另一个宏会扩展它们,因此你需要在这里嵌套两个类似函数的宏。