枚举的初始化可以自动化吗?

时间:2012-06-14 08:23:34

标签: c enums

我有一个字符串文件,我想通过它创建一个包含由字符串命名的值的枚举。例如,列表是:

"a" "b" "c" "d" ...

我想得到像这样的枚举

enum SomeEnum { a, b, c, d };

感谢。

3 个答案:

答案 0 :(得分:2)

我建议您使用任何流行的脚本语言(perl,python,tcl)并解析文件并生成您喜欢的枚举。

答案 1 :(得分:2)

你可以使用X-Macros,然后你只需要将你的枚举/字符串放在myfile.h中。

myFile.h

#ifndef ENUM_CONVERT
#define ENUM_CONVERT(val)  val
#define ENUM_HEADER enum SomeEnum
#endif

ENUM_HEADER
{
ENUM_CONVERT(a),
ENUM_CONVERT(b),
ENUM_CONVERT(c),
ENUM_CONVERT(d)
};

myfile.c文件

#include "myFile.h"  // This declares the enum
#define MKSTR(a)           #a
#define ENUM_CONVERT(val)  MKSTR(val)
#define ENUM_HEADER        char *myStrList[]=
#include "myFile.h"  // This defines the stringList

答案 2 :(得分:0)

c很难将字符串转换为变量