0

可能重复:
用于在 C 中连接两个字符串的宏

我有一个看起来像这样的函数:

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 中实现这一点的任何想法?

4

2 回答 2

5
#define MY_AMAZING_MACRO(name) \
  bool module_##name##_process(void* bar) { return doMagic(bar); }
于 2012-11-04T18:35:13.893 回答
4

使用连接运算符##

#define MY_AMAZING_MACRO(foo) bool module_##foo##_process(void* bar) { return doMagic(bar); }

有关更多详细信息,请参阅 gcc 在线文档:串联

于 2012-11-04T18:35:36.137 回答