我想做类似的事情:
#define TYPE uint32_t
#define ADDSUFFIX(x) xTHETYPE
THETYPE * ADDSUFFIX(getvalue) (THETYPE * pMem) {}
我需要获得uint32_t getvalueuint32_t (uint32_t * pMem) {}
取决于TYPE是什么。
如何使这项工作?
答案 0 :(得分:2)
您需要“令牌粘贴”操作符,但当其中一个操作数是参数或宏时,它会变得棘手。这对我有用:
#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) { }