Требуется оператор «вставка токена», но он может оказаться сложным, когда один из операндов является параметром или макросом.Это сработало для меня:
#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) { }