2012-11-04 38 views
0

可能重复:
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中完成?

+5

我想你是指令牌串联(##)。 – chris

+0

是啊克里斯确定 – Omkant

+0

您可能想阅读这里:http://gcc.gnu.org/onlinedocs/cpp/Stringification.html – alk

回答

5
#define MY_AMAZING_MACRO(name) \ 
    bool module_##name##_process(void* bar) { return doMagic(bar); } 
4

使用连接运算符##

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

详情请参阅gcc的在线文档:Concatenation

相关问题