#define MY_NUMBER_XLIST(X)\ X(One, 1)\ X(Ten, 10)\ X(Hundred, 100)\ X(Thousand, 1000) #define CREATE_ENUM_ITEM(name, value) name = value, #define CREATE_ENUM(enumName, enumXList) enum enumName { enumXList(CREATE_ENUM_ITEM) } // enum MyNumbers { One = 1, Ten = 10, Hundred = 100, Thousand = 1000, }; CREATE_ENUM(MyNumbers, MY_NUMBER_XLIST);