C:使用令牌粘贴扩展宏
所以这里有一些我创建的宏:
#define MODULE_NAME moduleName #define MODULE_STRUCT MODULE_NAME ## _struct #define MODULE_FUNCTION(name) MODULE_NAME ## _ ## name
在这些定义之后,我希望发生以下扩展:
MODULE_STRUCT --> moduleName_struct MODULE_FUNCTION(functionName) --> moduleName_functionName
但是,当我添加令牌粘贴运算符时,MODULE_FUNCTION和MODULE_STRUCT中的MODULE_NAME的扩展不再发生……在将它们粘贴在一起时,似乎将MODULE_NAME视为文字字符串。
有没有解决的办法?
在C中,不扩展令牌粘贴操作符##
的操作数。
您需要第二级间接来进行扩展。
#define CAT(x, y) CAT_(x, y) #define CAT_(x, y) x ## y