代码例举如下:
typedef enum {
#define MEMPOOL(name,num,size,desc) MEMP_##name,
#include "memp_std.h"
MEMP_MAX
} memp_t;
等同于
typedef enum {
MEMP_RAW_PCB,
MEMP_UDP_PCB,
MEMP_REASSDATA,
MEMP_MAX
} memp_t;
代码解析:
1、#define MEMPOOL(name,num,size,desc) MEMP_##name,
将MEMPOOL(name,num,size,desc)代替为MEMP_##name
例如"memp_std.h"文件里面包含如下的代码;
MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "123")
MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "456")
MEMPOOL(REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip_reassdata), "789")
全部替换成
MEMP_RAW_PCB,
MEMP_UDP_PCB,
MEMP_REASSDATA,
2、枚举最后一个枚举元素一般写该枚举的总数量。
注:该方式和代码例举来源于LWIP源码中。