【发布时间】:2017-07-08 00:22:10
【问题描述】:
我正在查看 Linux 内核头文件中的 if_link.h,它包含这个枚举:
enum {
IFLA_UNSPEC,
IFLA_ADDRESS,
IFLA_BROADCAST,
IFLA_IFNAME,
IFLA_MTU,
IFLA_LINK,
IFLA_QDISC,
IFLA_STATS,
IFLA_COST,
#define IFLA_COST IFLA_COST
IFLA_PRIORITY,
#define IFLA_PRIORITY IFLA_PRIORITY
IFLA_MASTER,
#define IFLA_MASTER IFLA_MASTER
....
}
定义看起来没用;他们的目的是什么?为什么只有部分项目有定义?
【问题讨论】:
-
也许代码在某处使用了
#ifdef IFLA_COST -
也许曾经有一个
define被更改为一个枚举,这只是为了向后兼容。你试过git blame吗? -
我的猜测是那些枚举值是后来添加的,所以定义是这样的,所以代码可以使用 ifdef 来查看它们是否存在。
-
这能回答你的问题吗? What does it mean by "#define X X"?
标签: c macros c-preprocessor