高級枚舉型定義實現
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")