1

我正在尝试为 XMacro 表中的结构分配一个值。

有没有其他方法可以将“偏移量”分配给结构的这个值?

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;\
}\
4

1 回答 1

0

制作一个结构,实际上是 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 },是初始化器的格式。

于 2016-12-09T03:37:29.693 回答