【发布时间】:2016-03-26 18:12:20
【问题描述】:
我一直在使用这样的基于 xmacros 的表:
#define TABLE_MACRO(MAN_TYPE, WOMAN_TYPE) \
MAN_TYPE( John, Doe, "Addr1", arg_a, arg_b, arg_c) \
WOMAN_TYPE( Jane, Joe, "Addr2", arg_a, arg_b, arg_c) \
MAN_TYPE( Bill, Tom, "Addr3", arg_a, arg_b, arg_c) \
我的表格比我展示的参数多得多,但是,在许多情况下,我只将表格扩展为 1 或 2。我使用它们来生成变量和枚举。例如:
#define NAME_LIST(name,last,addr, arg1, arg2, arg3) name,\
enum {
TABLE_MACRO(NAME_LIST,NAME_LIST)
}Name_List;
有没有办法获取 TABLE_MACRO 并重新定义或更改它的扩展顺序以使其扩展为这个?
TABLE_MACRO_NAMES_ONLY(MAN_TYPE, WOMAN_TYPE) \
MAN_TYPE( John, ) \
WOMAN_TYPE( Jane, ) \
MAN_TYPE( Bill, ) \
我的目标是简化表格,使用如下:
#define NEW_NAME(name) New_##name,
TABLE_MACRO_NAMES_ONLY(NEW_NAME, NEW_NAME)
【问题讨论】: