c - 枚举错误,变量未声明

标签 c enums

所以我有一些代码引发错误,但我不确定为什么。我使用宏为自己生成一个字符串数组和一个枚举,我可以使用它以直观的方式访问字符串数组。我的编译器提示我的宏,但我的其余代码似乎工作得好像宏成功创建了枚举,这让我很困惑。

宏如下

#define FOR_EACH_PHASE(PHASE)       \
            PHASE(init)         \
            PHASE(framerate)    \
            PHASE(priority)     \
            PHASE(time)         \
            PHASE(powersave)    \
            PHASE(performance)  \
            PHASE(response)

#define GENERATE_ENUM(ENUM) AI_phase_##ENUM,
#define GENERATE_STRING(STRING) "AI_phase_"#STRING,


typedef enum PHASE_ENUM PHASE_ENUM_t;
enum PHASE_ENUM {
    FOR_EACH_PHASE(GENERATE_ENUM)
    END
};

static const char* PHASE_STRINGS[] = {
    FOR_EACH_PHASE(GENERATE_STRING)
};

诸如此类的行似乎编译时没有错误

struct phase_profile* set_defaults;
set_defaults = AI_phases_get_name(PHASE_STRINGS[AI_phase_framerate]);

但是编译器对 FOR_EACH_PHASE 宏的每一行给出以下错误

error: 'performance' undeclared (first use in this function)

比我更了解这一点的人有什么想法吗?

干杯

最佳答案

我没有评论所需的声誉,因此我将此作为答案发布。

我相信你需要这个:

https://www.codeproject.com/Articles/32000/Improving-C-Enums-Adding-Serialization-Inheritance

我用了好几年了,很好!

关于c - 枚举错误,变量未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469342/

相关文章:

从图像创建 AR 标记

javascript - typescript 中的字符串枚举

c# - Enum.HasFlag 中的意外结果

java - 可以数组。 sort 对已添加到数组中的枚举进行排序。?

C:将 int 转换为 String

c - 为什么变量变为零?

谁能帮我解决这个 CPLEX 模型?

c - 加载了 dlopen 的共享库是否会自动关闭?

c# - Windows Azure cscfg 文件,呈现枚举

java - 如何在 Spring Boot Rest API 中的 BeanUtils.copyProperties 期间从 String 转换为 enum