读书人

宏定义将变量拼成字符串惟独一行代

发布时间: 2013-08-10 21:14:06 作者: rapoo

宏定义,将变量拼成字符串,只有一行代码,大家看看哪儿错了


#define dfp(CLASSNAME, METHODNAME, VARNAME, X) locationMap["CLASSNAME_METHODNAME_VARNAME_x"] = X;


比如我现在调用
dfp(classA, methodB, sprite, 10)
我想让它替换成:
locationMap["classA_methodB_sprite_x"] = 10;

结果不行,在网上查了一下,说用##分隔,也就是下面这个方法,


#define dfp(CLASSNAME, METHODNAME, VARNAME, X) locationMap["CLASSNAME##_##METHODNAME##_##VARNAME##_x"] = X;

试了一下,还是不行。
[解决办法]
#define dfp(CLASSNAME, METHODNAME, VARNAME, X) locationMap[#CLASSNAME"_"#METHODNAME"_"#VARNAME] = X

引用:

#define dfp(CLASSNAME, METHODNAME, VARNAME, X) locationMap["CLASSNAME_METHODNAME_VARNAME_x"] = X;


比如我现在调用
dfp(classA, methodB, sprite, 10)
我想让它替换成:
locationMap["classA_methodB_sprite_x"] = 10;

结果不行,在网上查了一下,说用##分隔,也就是下面这个方法,


#define dfp(CLASSNAME, METHODNAME, VARNAME, X) locationMap["CLASSNAME##_##METHODNAME##_##VARNAME##_x"] = X;

试了一下,还是不行。

读书人网 >C++

热点推荐