前几天我试图用宏来定义一个像这样的函数(显然是简化的):
#define DEF_ADD(name) \
int add_name(int x, int y) { \
return x + y; \
} \
现在,我希望代码段DEF_ADD(hello)
定义函数add_hello
。但是,宏调用定义了一个名为add_name
的函数。我希望这与扫描有关,但我找不到重建我正在寻找的行为的方法。任何想法如何做到这一点?
答案 0 :(得分:9)
你需要
#define DEF_ADD(name) \
int add_##name(int x, int y) { \
return x + y; \
}
请注意##
。我也删掉了最后的换行符。否则,不使用参数name
,您可以创建add_name
作为函数名称。