我想将预处理器指令嵌入到函数名称中。基本上我想制作一个宏,它将预处理器定义作为参数,并将其定义的 VALUE 连接起来以获取函数名称。
基本上是这样的:
#define PREFIX foo
#define CALL(P, x) _##P_bar(x)
...then
CALL(PREFIX, x) should become _foo_bar(x)
不幸的是,这会导致 _P_bar
而不是 _foo_bar
。
是否可以像上面那样工作?
最佳答案
C 标准定义了紧随 ## 运算符前后的宏参数的特殊行为。在这种情况下,它们不会完全扩展。这就是为什么您的代码没有按照您的预期运行。要进一步扩展参数,您必须以不紧接在 ## 运算符之前或之后的方式使用它。请尝试以下操作:
#define PREFIX foo
#define CALL2(P,x) _##P##_bar(x)
#define CALL(P, x) CALL2(P,x)
CALL(PREFIX, x)
关于c - 将预处理器指令嵌入到函数名称中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331559/