我指的是来自开源项目tig的代码示例。这是一个很棒的工具!
文件:tig.c
我正在努力寻找定义请求枚举的原因,如下所示:
enum request {
#define REQ_GROUP(help)
#define REQ_(req, help) REQ_##req
/* Offset all requests to avoid conflicts with ncurses getch values. */
REQ_UNKNOWN = KEY_MAX + 1,
REQ_OFFSET,
REQ_INFO,
/* Internal requests. */
REQ_JUMP_COMMIT,
#undef REQ_GROUP
#undef REQ_
};
甚至还有结构..
static const struct request_info req_info[] = {
#define REQ_GROUP(help) { 0, NULL, 0, (help) },
#define REQ_(req, help) { REQ_##req, (#req), STRING_SIZE(#req), (help) }
REQ_INFO
#undef REQ_GROUP
#undef REQ_
};
可以看出REQ_GROUP
已经#defined 多次造成混乱.. 至少对我来说。好吧,我知道这样做可能有充分的理由..使用宏在代码中隐藏枚举/结构定义的实际原因是什么?