今天在看LWIP的代码,在定义一个枚举类型的时候使用了下面的操作,**即在类型中定义了一个没有意义的MEMP_MAX类型。**这就保证了不管在这之前你定义了多少种类型,MEMP_MAX这个值就是该枚举种类的数量。后面可以使用该值初始化数组啊什么的,非常灵活。
typedef enum {
#define LWIP_MEMPOOL(name,num,size,desc) MEMP_##name,
#include "lwip/priv/memp_std.h"
MEMP_MAX
} memp_t;
下面是上面代码的编译后结果。上面代码中的##是一个连接符,可以将MEMP和name连接成一个变量的名字。