我在VS 2008中使用托管扩展
我想打印en enum值的名称
此代码曾经很好用VS 2003
Enum::GetName(__typeof(COMMAND_CODES),__box(iTmp))
但现在我收到了一个漫游错误
这是我的枚举
typedef enum { /* Command codes */
UMPC_NULL = 0,
} COMMAND_CODES
任何线索? ;
答案 0 :(得分:1)
据我所知,这在普通C ++中是不可能的,因为它没有reflection。
您可以在纯C ++中使用宏来解决它:
#define COMMAND_CODES \
ENUM_OR_STRING(CODE1), \
ENUM_OR_STRING(CODE1),
// Enum
#define ENUM_OR_STRING(x) x
enum CommandCodes
{
COMMAND_CODES
};
#undef ENUM_OR_STRING
// Names
#define ENUM_OR_STRING(x) #x
char *CommandCodeNames[] =
{
COMMAND_CODES
};
#undef ENUM_OR_STRING
现在,枚举成员的名称与CommandCodeNames[(int)commandCode]
一样容易获得。
答案 1 :(得分:0)