搜索
bottom↓
回复: 14

在KEIL4定义结构体,引用的时候报错

[复制链接]

出0入0汤圆

发表于 2016-1-15 10:18:43 | 显示全部楼层 |阅读模式
在disp.h里面定义了这样的结构体
typedef struct
{
            unsigned int MultiDispMsCount; //累积时间
        unsigned int ChangeTimeCount;
            unsigned char LedComNum        ;
            unsigned char ScanT;
        unsigned int WaitDispCount;  
        unsigned char DataBufLeft[2];  //左边数码管数据缓存
        unsigned char DataBufRight[2]; //右边数码管数据缓存      
        unsigned int  ModeChangeTimeCount;
}SYS_TASK_DISP_FORMAT;

extern SYS_TASK_DISP_FORMAT Disp;  

然后在disp_function.c里面调用了这个disp.h文件,
并且做了这样的声明SYS_TASK_DISP_FORMAT Disp;
Disp.DataBufLeft[0]为什么这样引用会报错,,,但是我同意的写法用IAR编译就不会报错,得到的就是正确的结果

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2016-1-15 10:30:51 | 显示全部楼层
我有强迫症,开头空格数不一样,随便留空格看的不爽

出0入0汤圆

发表于 2016-1-15 10:38:30 | 显示全部楼层
等待高手解答

出0入8汤圆

发表于 2016-1-15 10:56:02 | 显示全部楼层
看着没问题,报什么错?

出0入0汤圆

发表于 2016-1-15 11:44:01 | 显示全部楼层
报错的信息为什么不发?另外头文件里应该只留下声明,包含定义的话会在包含这个头文件的模块里都定义了这个变量,不同模块对应不同的地址单元。

出0入0汤圆

发表于 2016-1-15 11:48:05 | 显示全部楼层
extern struct SYS_TASK_DISP_FORMAT Disp;  试试

出0入0汤圆

发表于 2016-1-15 14:35:59 | 显示全部楼层
同样表示疑惑,在IAR里面确实没有报错,在MPLAB里面同样也会报错

出0入0汤圆

发表于 2016-1-15 14:56:44 | 显示全部楼层
看起来不应该报错,但是你得把报的什么错发出来才能给你找问题啊!

出0入0汤圆

发表于 2016-1-15 15:54:44 | 显示全部楼层
你在h文件里用了extern SYS_TASK_DISP_FORMAT Disp;  
在C文件里又定义了SYS_TASK_DISP_FORMAT Disp;
这就相当于你引用了一个外部的变量,又在本地定义了一个同名变量,不符合规范的。

出0入0汤圆

发表于 2016-1-15 16:42:00 | 显示全部楼层
加上
#define _MAIN_C

#ifndef _MAIN_C
程序段
#endif

出0入0汤圆

发表于 2016-1-15 19:00:06 | 显示全部楼层
qllaoda1 发表于 2016-1-15 15:54
你在h文件里用了extern SYS_TASK_DISP_FORMAT Disp;  
在C文件里又定义了SYS_TASK_DISP_FORMAT Disp;
这就 ...

这个没问题啊。
extern只是变量声明而已。
SYS_TASK_DIS_FORMAT Disp是变量定义,并不冲突。
一直都这么干的。

出0入0汤圆

发表于 2016-1-15 20:20:02 | 显示全部楼层
报的什么错,,,,

出0入0汤圆

 楼主| 发表于 2016-1-15 21:41:15 | 显示全部楼层
Eiman 发表于 2016-1-15 10:30
我有强迫症,开头空格数不一样,随便留空格看的不爽

这里是复制过来的,所以是这样的

出0入0汤圆

 楼主| 发表于 2016-1-15 21:42:27 | 显示全部楼层
问题决解了,确实这样不会报错的,是我自己弄错了,别的地方弄错了,不好意思

出0入0汤圆

发表于 2016-1-17 01:26:38 | 显示全部楼层
.不行的时候可以用->试试。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 12:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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