オープンソースプロジェクトtigのコードサンプルを参照しています。これは素晴らしいツールです!
file: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
何度もあり、混乱を招いています。少なくとも私にとっては。そうするのには十分な理由があるかもしれません。マクロを使用してコード内の列挙型/構造体の定義を非表示にする実際の理由は何ですか?