0

我有一个基于用户输入生成 ENUM 的外部工具。现在这个 ENUM 正在被我的 C++ 代码使用,其中我必须根据变量“x”选择一个特定的 ENUM。生成的 ENUMS 的形式为“ENUM_1”、“ENUM_2”、“ENUM_3”....等等。现在我想要代码中的代码,以便根据“x”选择适当的 ENUM。我尝试使用 strcat 函数,例如:

typedef enum ( enum_1, enum_2, enum_3...enum_n) map1;

y=(map1)strcat("enum_", x);

但它给了我错误“无法从 char* 转换为 map1。

有人可以建议一种实现这一目标的方法。

谢谢你

4

3 回答 3

1

您不能使用strcat. 根据我的描述,您想转换xmap1. 要实现这一点,您可以map1 m = (map1)(x-1);查看此示例代码:

typedef enum { enum_1, enum_2, enum_3} map1;

int main()
{
    int x = 1;
    map1 m = (map1)(x-1);
}

-1是必需的,因为枚举的整数值map1从 0 开始。

于 2011-03-29T05:42:00.267 回答
1

你不能这样做。好吧,你不能这样做......

枚举在编译时不按名称评估。您必须尝试使用​​预处理器。您可以创建一个定义来做类似的事情。就像是:

#define fn(x) enum_##x

然后打电话

fn(x)

但是当文件被预处理时就会发生这种情况。所以你不能访问运行时变量。从你的代码来看,我认为你不能做你想做的事。不过祝你好运。

于 2011-03-29T05:45:37.130 回答
0

现在我想要代码中的代码,以便根据“x”选择适当的 ENUM。

枚举值是常量,并且基于我假设它x是整数数据类型的语句。

y=(map1)strcat("enum_", x);

strcat(..) 传递参数的类型应该是char*. 显然x不是char*基于先前陈述的类型。目前尚不清楚您为什么要使用它strcat来完成此任务。

回答您的主题行:不。您不能将 strcat 与枚举值一起使用。

于 2011-03-29T05:44:31.670 回答