使用宏来构造函数

时间:2012-11-04 18:28:27

标签: c macros c-preprocessor

  

可能重复:
  Macro for concatenating two strings in 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中实现这一目标的任何想法?

2 个答案:

答案 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