您的位置:首页 > 其它

DPDK研究之枚举类型

2016-06-28 22:52 246 查看
在DPDK中有个枚举类型,如下:

enum {
/* long options mapped to a short option */

#define OPT_PCI_WHITELIST "pci-whitelist"
OPT_PCI_WHITELIST_NUM = 'w',

#define OPT_PCI_BLACKLIST "pci-blacklist"
OPT_PCI_BLACKLIST_NUM = 'b',

/* first long only option value must be >= 256, so that we won't
 * conflict with short options */
OPT_LONG_MIN_NUM = 256,

#define OPT_HUGE_DIR    "huge-dir"
OPT_HUGE_DIR_NUM = OPT_LONG_MIN_NUM,

#define OPT_MASTER_LCORE "master-lcore"
OPT_MASTER_LCORE_NUM,

#define OPT_PROC_TYPE   "proc-type"
OPT_PROC_TYPE_NUM,

#define OPT_NO_SHCONF   "no-shconf"
OPT_NO_SHCONF_NUM,

#define OPT_NO_HPET     "no-hpet"
OPT_NO_HPET_NUM,

#define OPT_VMWARE_TSC_MAP   "vmware-tsc-map"
OPT_VMWARE_TSC_MAP_NUM,

#define OPT_NO_PCI      "no-pci"
OPT_NO_PCI_NUM,

#define OPT_NO_HUGE     "no-huge"
OPT_NO_HUGE_NUM,

#define OPT_FILE_PREFIX "file-prefix"
OPT_FILE_PREFIX_NUM,

#define OPT_SOCKET_MEM  "socket-mem"
OPT_SOCKET_MEM_NUM,

#define OPT_VDEV        "vdev"
OPT_VDEV_NUM,

#define OPT_SYSLOG      "syslog"
OPT_SYSLOG_NUM,

#define OPT_LOG_LEVEL   "log-level"
OPT_LOG_LEVEL_NUM,

#define OPT_BASE_VIRTADDR   "base-virtaddr"
OPT_BASE_VIRTADDR_NUM,

#define OPT_XEN_DOM0    "xen-dom0"
OPT_XEN_DOM0_NUM,

#define OPT_CREATE_UIO_DEV "create-uio-dev"
OPT_CREATE_UIO_DEV_NUM,

#define OPT_VFIO_INTR    "vfio-intr"
OPT_VFIO_INTR_NUM,
OPT_LONG_MAX_NUM

};

由于之前没有见过,所以对这个很好奇,但是从定义上看大致就是一个枚举类型,并且使用了很多宏定义。

测试代码:

<span style="font-size:18px;">#include <stdio.h>

enum{
test_1,
test_2,
#define test_log_1 123
test_256=256,
test_257,
test_258,
};

int main(void)
{
printf("%d, %d, %d, %d, %d, %d\n", test_1, test_2, test_256, test_257, test_258, test_log_1);
return 0;
}</span>


运行结果:

test]# ./test 

0, 1, 256, 257, 258, 123

结论:枚举类型中使用宏定义来给成员赋值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息