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 }, 初始化程序的格式。