在阅读其中一个Linux标题<linux/rtnetlink.h>
时,我遇到了一些奇怪的事情:
/* RTnetlink multicast groups */
enum rtnetlink_groups {
RTNLGRP_NONE,
#define RTNLGRP_NONE RTNLGRP_NONE
RTNLGRP_LINK,
#define RTNLGRP_LINK RTNLGRP_LINK
RTNLGRP_NOTIFY,
#define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
RTNLGRP_NEIGH,
#define RTNLGRP_NEIGH RTNLGRP_NEIGH
RTNLGRP_TC,
#define RTNLGRP_TC RTNLGRP_TC
RTNLGRP_IPV4_IFADDR,
#define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
/* ... etc, pattern continues ... */
};
我很难理解这里宏的原因或者它们会产生什么不同。这有什么用途?
答案 0 :(得分:6)
它使常量对预处理器可见。您可以使用#ifdef
检查特定常量是否可用。