找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2503|回复: 2
收起左侧

求助!!!最近做了一个项目,但是遇到了一些问题,请大家帮忙出出注意……

[复制链接]
ID:57973 发表于 2014-1-2 22:59 | 显示全部楼层 |阅读模式
最近做了一个项目,但是遇到了一些问题,请大家帮忙出出注意……
问题如下:
在工程中建立了了5个头文件:a.h,b.h,c.h,d.h,e.h,和6个源文件a.c,b.c,c.c,d.c,e.c,main.c;自己讲一些不能改变的数据定义到了一个数组data[]里面,data[]是在e.h中声明的,如下:extern unsigned char code data[1024];在e.c中进行定义,如下:unsigned char code data[1024]={/*1024个十六进制数据,此处省略*/};在main.c,a.c,b.c中都会用到data[]。分别在a.h,a.c中声明和定义了一个函数,fun(unsigned char *pt);在main.c中包含以上5个头文件,main函数中调用函数fun(data),编译通过(error为0,warring不为零),可是调试的时候却出现问题,后来查看一下报警信息才知道,报警信息的大概意思就是说data[]这个数组没有定义或没有声明,以至于没有解析,(*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: DATA)所以执行时data[]中的数据就给的随机数,一致运行不正确,请大家帮我分析一下是什么原因造成的,我应该从那几个方面进行分析解决呢?

回复

使用道具 举报

ID:18297 发表于 2014-1-3 09:22 | 显示全部楼层
你为什么不把数组data[]的定义和声明都放在一个公用的头文件内呢?
可以建个公共的头文件sys.h,把数组data[]包含在内的。
回复

使用道具 举报

ID:57973 发表于 2014-1-3 16:53 | 显示全部楼层
头文件内最好不要进行定义,只做声明用,因为他是一个接口文件,属于上层的东西,问题最后解决了,原来是在定义的文件中多加了一个extern,自己被弄糊涂了当时,extern只能在声明的时候才能使用,定义的时候是不能使用的,还是要谢谢你!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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