我想要做的事,如:如何在C中追加兩個#define作爲關鍵字?
#define TYPE uint32_t
#define ADDSUFFIX(x) xTHETYPE
THETYPE * ADDSUFFIX(getvalue) (THETYPE * pMem) {}
,我需要得到uint32_t getvalueuint32_t (uint32_t * pMem) {}
要看是什麼類型。
如何使這項工作?
我想要做的事,如:如何在C中追加兩個#define作爲關鍵字?
#define TYPE uint32_t
#define ADDSUFFIX(x) xTHETYPE
THETYPE * ADDSUFFIX(getvalue) (THETYPE * pMem) {}
,我需要得到uint32_t getvalueuint32_t (uint32_t * pMem) {}
要看是什麼類型。
如何使這項工作?
你想要「令牌粘貼」操作符,但當其中一個操作數是參數或宏時會變得棘手。這爲我工作:
#define THETYPE uint32_t
#define ADDSUFFIX_2(x,y) x ## y
#define ADDSUFFIX_1(x,y) ADDSUFFIX_2(x,y)
#define ADDSUFFIX(x) ADDSUFFIX_1(x,THETYPE)
THETYPE * ADDSUFFIX(getvalue) (THETYPE * pMem) {}
如果你想getvalue_uint32_t,這個工程:
#define ADDSUFFIX(x) ADDSUFFIX_1(x ## _,THETYPE)
還認爲:
#define MKFUNC(type,func,param) \
type * ADDSUFFIX_1(funC## _,type) (type * param)
MKFUNC(uint32_t,getvalue,pMem) { }
http://stackoverflow.com/questions/5459868/c-預處理器 - 連接字符串到字符串 – 2011-05-27 01:40:28