我有一个看起来像这样的函数:
bool module_foo_process(void* bar) { return doMagic(bar); }
现在,我想用宏生成它。例如,上述函数的宏看起来像这样:
MY_AMAZING_MACRO(foo)
这允许我写一些类似的东西:
MY_AMAZING_MACRO(awesome)
得到这个:
bool module_awesome_process(void* bar) { return doMagic(bar); }
关于如何在C中实现这一目标的任何想法?
答案 0 :(得分:5)
#define MY_AMAZING_MACRO(name) \
bool module_##name##_process(void* bar) { return doMagic(bar); }
答案 1 :(得分:4)
使用连接运算符##
:
#define MY_AMAZING_MACRO(foo) bool module_##foo##_process(void* bar) { return doMagic(bar); }
有关详细信息,请参阅gcc在线文档:Concatenation。