标题: 求助!!!最近做了一个项目,但是遇到了一些问题,请大家帮忙出出注意…… [打印本页]

作者: xzxlove    时间: 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[]中的数据就给的随机数,一致运行不正确,请大家帮我分析一下是什么原因造成的,我应该从那几个方面进行分析解决呢?


作者: zjjhtony    时间: 2014-1-3 09:22
你为什么不把数组data[]的定义和声明都放在一个公用的头文件内呢?
可以建个公共的头文件sys.h,把数组data[]包含在内的。
作者: xzxlove    时间: 2014-1-3 16:53
头文件内最好不要进行定义,只做声明用,因为他是一个接口文件,属于上层的东西,问题最后解决了,原来是在定义的文件中多加了一个extern,自己被弄糊涂了当时,extern只能在声明的时候才能使用,定义的时候是不能使用的,还是要谢谢你!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1