1、 头文件定义如下:
/* declears in “funcs.h” */
FUNC_1(ID_FUN1_001)
FUNC_1(ID_FUN1_002)
FUNC_2(ID_FUN2_001)
FUNC_2(ID_FUN2_002)
2、 多次包含头文件
#define FUNC_1(opt) opt,
#define FUNC_2(opt)
enum aaa {
#include “funcs.h”
ID_FUN1_END
};
#undef FUNC_1
#undef FUNC_2
#define FUNC_1(opt)
#define FUNC_2(opt) opt,
enum bbb {
#include “funcs.h”
ID_FUN2_END
};
#undef FUNC_1
#undef FUNC_2
这样,把宏翻译之后,我们定义的两个enum分别如下
enum aaa {
ID_FUN1_001,
ID_FUN1_002,
ID_FUN1_END
};
enum bbb {
ID_FUN2_001,
ID_FUN2_002,
ID_FUN2_END
};
原文:http://blog.csdn.net/super_dc/article/details/39676589