OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7574|回复: 14

请问一个函数中定义了枚举,我在另一个函数中想用到这个枚举,该如何使用?

[复制链接]

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-9-9 18:09:34 | 显示全部楼层 |阅读模式
我在MAIN.H里定义了枚举
typedef enum
{
  ADDR_R_ERROR,             //读地址时错误
  COMMUNICATION_ERROR,      //通信时错误
  UART_ERROR,               //串口通信时错误
  AI_OK,                    //正常
}AI_STATUS;
又想在UART.C中使用这个枚举,所以我在UART.H中添加extern typedef enum AI_STATUS;
结果就报错了……该如何添加?求教!
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2012-10-31
在线时间
0 小时
发表于 2013-9-9 18:29:27 | 显示全部楼层
在一个公共头文件定义一下就行了
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-9-9 18:29:47 | 显示全部楼层
直接include "main.h"
业余程序玩家。
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-10 08:34:40 | 显示全部楼层
我把它放在公共的头文件里,然后定义了一个枚举类型的变量,结果就报错,说重复定义


博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-10 08:35:30 | 显示全部楼层
回复【2楼】gujie:
---------------------------------
重复定义如何解决- -···
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-10 08:35:48 | 显示全部楼层
回复【3楼】ofourme:
---------------------------------
我包含了,但出现重复定义
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

13

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2013-8-3
在线时间
1 小时
发表于 2013-9-10 09:18:07 | 显示全部楼层
你在AI_STATUS的前面加一个extern关键字试试
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-10 09:38:56 | 显示全部楼层
回复【7楼】冰封小凯:
---------------------------------
可能是这篇文章说的问题http://blog.csdn.net/linux_devices_driver/article/details/7044099
头文件不能定义全局变量。我已经把枚举换掉了,所以回头有空再改回来试试- -
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-9-10 09:48:54 | 显示全部楼层
在头文件里面可以用 下面两种形式 就可以了

typedef enum {
}Type;

或者 

enum {
};//后面不要加变量
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-10 09:52:41 | 显示全部楼层
回复【9楼】aleda303:
---------------------------------
如果我要定义变量呢?
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

13

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2013-8-3
在线时间
1 小时
发表于 2013-9-10 16:55:28 | 显示全部楼层
回复【10楼】feilusia:
--------------------------------
变量定义不要在头文件中,在你用到这个变量的C文件中定义就可以了,这个定义的变量要是在别的地方用到,就可以在头文件中用extern声明一下,然后在用到这个变量的C文件中包含这个头文件就可以了。还有一点,我认为,8楼说的那两种情况,都不算是定义,因为都没有真正的出现被定义的变量。
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-9-10 17:27:41 | 显示全部楼层
变量不要再头文件中定义, 可以在头文件中声明。 用extern;

或者 有一种情况, 就是你这个头文件 只被一个文件调用, 这样是合法的 , 但是还是不建议这样使用。
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-9-10 17:28:22 | 显示全部楼层
回复【10楼】feilusia:
---------------------------------
而且 尽量少用全局变量。大部分时候 可以用函数传递的方式 来解决这个问题
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-10 17:56:46 | 显示全部楼层
回复【13楼】aleda303:
---------------------------------
以后纠正这个头文件定义变量的习惯,谢谢你耐心的回答!!
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-10 17:57:05 | 显示全部楼层
回复【11楼】冰封小凯:
---------------------------------
嗯,知道了,谢谢你耐心的回答!!!~~
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 09:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表