首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >枚举错误,变量未声明

枚举错误,变量未声明
EN

Stack Overflow用户
提问于 2017-09-28 12:35:38
回答 1查看 543关注 0票数 0

因此,我有一些代码抛给我一个错误,我不知道为什么。我正在使用宏来生成一个字符串数组和一个枚举,我可以使用它们以直观的方式访问字符串数组。我的编译器正在抱怨我的宏,但我的其余代码似乎在工作,好像宏成功地创建了enum,这让我非常困惑。

宏如下所示

代码语言:javascript
复制
#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)
};

这样的行似乎没有错误地编译。

代码语言:javascript
复制
struct phase_profile* set_defaults;
set_defaults = AI_phases_get_name(PHASE_STRINGS[AI_phase_framerate]);

但是编译器为我的FOR_EACH_PHASE宏的每一行都提供了以下错误

错误:“性能”未声明(在此函数中首次使用)

有比我更了解这件事的人的想法吗?

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-28 12:44:20

我没有必要的声誉来发表评论,所以我把这个作为一个答案。

我相信你需要这个:

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46469342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档