作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在访问定义多个源文件之间程序状态的枚举时遇到问题。
我在头文件 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/
我是一名优秀的程序员,十分优秀!