XMacro 中的结构
Struct in a XMacro
我正在尝试为 XMacro 中的结构赋值 table。
是否有任何其他方法可以将 "offset" 分配给结构的这个值?
typedef enum Time_Unit_Tag
{
NO_UNIT,
HOUR,
MINUTES,
SECONDS,
TOTAL_UNITS
} Time_Unit_T;
enum
{
OFFSET_HOUR = 0,
OFFSET_MIN = 2,
OFFSET_SEC = 4
};
#define CHANGE_TIME \
TIME(HOUR, "HOUR" , OFFSET_HOUR)\
TIME(MINUTES, "MINUTES", OFFSET_MIN )\
TIME(SECONDS, "SECONDS", OFFSET_SEC )\
#undef TIME
#define TIME(unit, desc, offset)\
if(count == unit)\
{\
P(desc)\
format_clock.offset = offset;\
}\
制作一个结构,实际上是 3 个项目的数组
struct {
Time_Unit_T unit;
char *desc;
int offset; // could also use enum{}, but the one above has no tag
} mystruct[3]
并初始化它
= {
#define TIME(u, d, o) { u, d, o },
CHANGE_TIME
};
使用 x-macro,您可以以正确的格式定义新的内部宏。这里 { u, d, o },
初始化程序的格式。
我正在尝试为 XMacro 中的结构赋值 table。
是否有任何其他方法可以将 "offset" 分配给结构的这个值?
typedef enum Time_Unit_Tag
{
NO_UNIT,
HOUR,
MINUTES,
SECONDS,
TOTAL_UNITS
} Time_Unit_T;
enum
{
OFFSET_HOUR = 0,
OFFSET_MIN = 2,
OFFSET_SEC = 4
};
#define CHANGE_TIME \
TIME(HOUR, "HOUR" , OFFSET_HOUR)\
TIME(MINUTES, "MINUTES", OFFSET_MIN )\
TIME(SECONDS, "SECONDS", OFFSET_SEC )\
#undef TIME
#define TIME(unit, desc, offset)\
if(count == unit)\
{\
P(desc)\
format_clock.offset = offset;\
}\
制作一个结构,实际上是 3 个项目的数组
struct {
Time_Unit_T unit;
char *desc;
int offset; // could also use enum{}, but the one above has no tag
} mystruct[3]
并初始化它
= {
#define TIME(u, d, o) { u, d, o },
CHANGE_TIME
};
使用 x-macro,您可以以正确的格式定义新的内部宏。这里 { u, d, o },
初始化程序的格式。