enum-使用宏管理你的枚举型数据

高级枚举型定义实现

C源文件

#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
/*
实现原理说明:
首先在枚举型结构体中定义宏定义 #define ENUM_(name,num,size,desc)  MACRO_##name = num,
然后在引入头文件,头文件包含的宏定义的调用将在这里进行展开,展开之后,会得到一个由宏定义扩展之后的
枚举型结构体
*/
enum MACRO_ENUM
{
    #define ENUM_(name,num,size,desc)  MACRO_##name = num,
    #include "enum_example.h"
    MACRO_MAX,
};


int main(int argc, char *argv[])
{
    /* 经过宏扩展的之后的枚举型变量大小 */
    printf("after macro MACRO_MAX = [%d]\n", MACRO_MAX);

    return 0;
}

enum_example.h

/**
 * @brief  宏定义实现枚举型的扩展
 * @    该头文件仅用于扩展对应文件宏定义
 */

#define EXAM1_SIZE 1

ENUM_(EXAM1,EXAM1_SIZE,sizeof(int),"this is a enum example")

#define EXAM2_SIZE 2
ENUM_(EXAM2,EXAM1_SIZE,sizeof(int),"this is a enum example")

#define EXAM3_SIZE 30
ENUM_(EXAM3,EXAM3_SIZE,sizeof(int),"this is a enum example")

发布了353 篇原创文章 · 获赞 133 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/andrewgithub/article/details/103450652