gsf
我有
#define MACRO foo
#define Code(m) \
m##Bar
Code(MACRO)
我希望将其解析为fooBar,但将其解析为MACROBar。
我需要更改要通过其值而不是其名称解析的宏。
格热哥兹·斯佩特科夫斯基
您需要的是类似辅助功能的宏,该宏将m
预处理令牌扩展为foo
:
#include <stdio.h>
#define MACRO foo
#define CodeReal(m) \
m##Bar
#define Code(m) CodeReal(m)
int main(void)
{
int Code(MACRO) = 0;
printf("%d\n", fooBar);
return 0;
}
正如下面的注释中指出的那样,您需要它,因为受##
运算符约束的宏参数不会被评估为其值(即替换)。上面的代码是解决此问题的常用方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句