枚举错误,变量未声明

时间:2017-09-28 12:35:39

标签: 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宏的每一行提供了以下错误

  

错误:'表现'未申报(首次使用此功能)

任何比我更了解此事的人的想法?

干杯

1 个答案:

答案 0 :(得分:0)

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

我相信你需要这个:

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

我现在用它好几年了,很好!