文字列によって名前が付けられた値を持つ列挙型を作成したい文字列のファイルがあります。たとえば、リストは次のとおりです。
"a" "b" "c" "d" ...
このような列挙型を取得したい
enum SomeEnum { a, b, c, d };
ありがとう。
X-Macros を使用できます。その場合は、列挙型/文字列を に配置するだけで済みます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)
};
#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
一般的なスクリプト言語 (perl、python、tcl) のいずれかを使用して、ファイルを解析し、好きな列挙型を生成することをお勧めします。
cで文字列を変数に変換するのは難しい