2012-11-04 75 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

相關問題