
请问一个头文件 定义报错问题 我自己定义了一个 wifi_uart.h 的文件, 文件中很多unsigned char 和布尔 变量要定义。 我调用了 uin8_t 和bool 来定义, 如下:
复制代码 因为uint8_t 是 在stm8s.h 中 定义的。
复制代码 所有我在 wifi_uart.h 中 添加了头文件 #include "stm8s.h" 但是编译的的时候出现了 重复定义的错误: #error clnk Debug\smartsocket.lkf:58 Debug\wifi_uart.o: symbol _RX1_Buffer multiply defined (Debug\main.o) 我把 wifi_uart.h 中 的 #include "stm8s.h" 注释掉: 编译的时候 却 显示了 一大堆 缺少 ”;“ 的 错误, 但实际是没有缺的 #error cpstm8 inc\wifi_uart.h:20(0+7) missing ; 我想 只把 下面句加到 wifi_uart.h 中 编译的时候 也是报了 重复定义的错误!!!!
复制代码 请问具体是该如何处理? 最后我向苍天保证 RX1_Buffer 只在 wifi_uart.h 中定义一次!!!!!! 苍天作证!!!!! |
不需要,最简单的方法,如我之前说的,可以定义一个.c文件专门定义变量,同时定义相应.h文件声明相应变量,然后其他.c都包含该.h文件即可(如同你的stm8s.h文件一样,导出都需要)
extern uint8_t RX1_Buffer[RX1_Lenth];
但是有些数据 不单单 这个 wifi_uart.c 要用到。
我的想法是 在wifi_uart.h 中 统一定义, 其他c 文件 要用到就调用一下 这个h 文件!!!
自己工程架构能力还是很差很不规范!!!
smartsocket_wifi.rar
2015-10-16 14:34 上传
点击文件名下载附件
下载积分: ST金币 -13.83 MB, 下载次数: 10, 下载积分: ST金币 -1
那你可以建立一个.c专门负责数据的创建,和一个.h负责相应声明,其他.c文件调用即可。
E:\测试\smartsocket_wifi\inc\wifi_sys.h:14:uint8_t RX1_Buffer[RX1_Lenth]; //接收缓冲 idata
E:\测试\smartsocket_wifi\inc\wifi_uart.h:18:uint8_t RX1_Buffer[RX1_Lenth]; //接收缓冲 idata
你重复定义了!!还有你#include "wifi_uart.h"这个在main.c和wifi_uart.c都调用了,所以RX1_Buffer[RX1_Lenth];声明了两次
不能包含 stm8.h 请问 uint8_t 和 bool 怎么办???
wifi_uart.h 中要用到这个两个 来定义变量怎么办????
我终于明白你的意思了!!!!
”数据定义应该在.c文件中定义,在.h文件中声明“
这是最基本的要诀!!!都怪自己基础太差!!!!!
推荐大家看看 :”过马路 看左右“ 的博文!!!!!
https://wenku.baidu.com/link?url ... PvLnjRyoGCD7usf8d5m
但是我还是有个疑惑!!!!!如下:
如果 变量 被 其他很多 A.c B.c C,c ...... 都用到
1. 那么 是不是 应该在main.c 中定义, 然后 A.h B.h .....文件中 extern 声明??????
2. 如果是这样, 那么变量多了呢???? 不会 都在main.C 中定义 ,然后其他c文件中extern吧?????