是否可以使用常规文本加入宏定义?
例如;
#define T_NAME Text_Int
#define MAP_KEYS T_NAME _Map_Keys // defined in a separate header file "a.h"
// I am hoping MAP_KEYS = Text_Int_Map_Keys
所以我可以去:
#undef T_NAME
#undef MAP_KEYS
#define T_NAME Text_Real
#define MAP_KEYS T_NAME _Map_Keys
#undef T_NAME
#undef MAP_KEYS
#define T_NAME Text_Short
#define MAP_KEYS T_NAME _Map_Keys
答案 0 :(得分:3)
使用CAT
宏:
#define CAT(x, y) CAT_(x, y)
#define CAT_(x, y) x ## y
#define T_NAME Text_Int
#define MAP_KEYS CAT(T_NAME, _MAP_KEYS)
然后
MAP_KEYS
将扩展为Text_Int_Map_Keys
。
需要间接,因为##
的普通操作数在粘贴之前不会展开。