我正在使用来自这个帖子的宏循环遍历我的参数。一切都很好!但是,有没有办法将这两个
我需要提取第一个参数
当我只有一个参数时,使用
CCB_CREATE
和CCB_CREATE_MORE
合并起来?我需要提取第一个参数
object_type
以编写其他代码。其他的object_type
将使用FOR_EACH
循环插入到映射中。当我只有一个参数时,使用
CCB_CREATE_MORE(Type1)
时,编译器会出现问题。为了解决这个问题,我创建了另一个宏来处理CCB_CREATE(Type1)
。希望找到一个聪明的方法将这两个宏合并成一个优雅的宏。有什么想法吗?#define INSERT_LOADER_MAP(object_type) loader_map.insert(make_pair(#object_type, object_type##Loader::loader()))
#define CCB_CREATE_MORE(object_type,...) \
static CCNode * create##object_type##Node() { \
std::map<std::string, CCNodeLoader*> loader_map; \
std::string classname = #object_type; \
FOR_EACH(INSERT_LOADER_MAP,object_type,__VA_ARGS__); \
return loadCCBFile((classname + ".ccbi").c_str(), loader_map); \
}
#define CCB_CREATE(object_type) \
static CCNode * create##object_type##Node() { \
std::map<std::string, CCNodeLoader*> loader_map; \
std::string classname = #object_type; \
INSERT_LOADER_MAP(object_type); \
return loadCCBFile((classname + ".ccbi").c_str(), loader_map); \
}
__type__
,它是一个保留标识符。 - chris