gpt4 book ai didi

c++ - 如何在非托管 C++ 中使用 Enum::GetName

转载 作者:行者123 更新时间:2023-11-28 08:32:22 29 4
gpt4 key购买 nike

我在 VS 2008 中使用托管扩展

我想打印一个枚举值的名称

这段代码曾经很好 VS 2003

Enum::GetName(__typeof(COMMAND_CODES),__box(iTmp))

但是现在我得到一个 comile 错误

这是我的枚举

typedef enum  { /* Command codes */
UMPC_NULL = 0,
} COMMAND_CODES

有什么线索吗?;

最佳答案

据我所知,这在普通 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]一样容易获得。

关于c++ - 如何在非托管 C++ 中使用 Enum::GetName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378588/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com