gpt4 book ai didi

c - 不同源文件之间的外部枚举 - C

转载 作者:行者123 更新时间:2023-12-05 08:33:02 24 4
gpt4 key购买 nike

我在访问定义多个源文件之间程序状态的枚举时遇到问题。

我在头文件 main.h 中定义了我的枚举

    typedef enum{ 
STATE_HOME,
STATE_SETUP,
}STATE;

extern enum STATE state;

我在我的 main.c 中声明它

#include "main.h"
STATE state = STATE_HOME;

但是当我尝试在另一个源文件 example.c 中使用它时,它显示“对状态的 undefined reference ”:

#include "main.h"
void loop ()
{
UART(state);
}

最佳答案

解决您问题的最快方法是将您的枚举更改为:

typedef enum STATE {
STATE_HOME,
STATE_SETUP,
} STATE;

但就个人而言,我讨厌 C 语言中的类型定义,正如您已经注意到的那样:命名困惑。

我认为更可取的方法就是这样:

-- main.h:

enum STATE {
STATE_HOME,
STATE_SETUP,
};


extern enum STATE state;

-- 主.c:

enum STATE state = STATE_HOME;

这避免了关于 typedef 的不同 C 语言命名空间的整个讨论。

抱歉没有更多解释的简洁回答......

关于c - 不同源文件之间的外部枚举 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46241653/

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