打印

单片机数组访问错误的问题

[复制链接]
2242|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qwt870101|  楼主 | 2012-5-7 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在编写stc单片机程序的时候遇到个问题,我用的是keilc51编译器,
比如我在
stor.c中
定义了个数组 extern unsigned char code c[] = {1,2,3,4};
当然在stor.h中也做了相应的声明,extern unsigned char code c[];

然后在main.c中,包含了这个stor.h头文件,然后我用串口sendstring(c),输出的数组数据是错误的,但是要是把这个c数组定义在mian.c文件中,sendstring(c)就能输出正确的数据。大家有人碰到过这种问题吗?要如何解决,我很纠结,希望大侠能帮我解开这个疑惑,感谢了。

相关帖子

沙发
ningling_21| | 2012-5-7 21:00 | 只看该作者
定义的时候不用  extern ,声明的时候才用.

使用特权

评论回复
板凳
ayb_ice| | 2012-5-8 08:35 | 只看该作者
定义和声明都没有搞清楚

使用特权

评论回复
地板
liang7143| | 2012-5-8 10:15 | 只看该作者
定义的时候不用  extern ,声明的时候才用.
ningling_21 发表于 2012-5-7 21:00

谁说定义的时候不能用extern,定义还是声明,确实比较难分清,得根据具体的上下文
并不能简单的根据有没有extern关键字来区分,是不完善的
但有一条,类似于
extern unsigned char code c[] = {1,2,3,4};
带有初始化赋值的 一定是定义 不是声明

使用特权

评论回复
5
lbygtwx| | 2012-5-8 10:31 | 只看该作者
stor.c中
这样定义数组试试 unsigned char code c[] = {1,2,3,4};

使用特权

评论回复
6
ayb_ice| | 2012-5-8 10:34 | 只看该作者
谁说定义的时候不能用extern,定义还是声明,确实比较难分清,得根据具体的上下文
并不能简单的根据有没有extern关键字来区分,是不完善的
但有一条,类似于
extern unsigned char code c[] = {1,2,3,4};
带有初始 ...
liang7143 发表于 2012-5-8 10:15
果然是大牛,除非C标准是你定义的

使用特权

评论回复
7
qwt870101|  楼主 | 2012-5-8 16:44 | 只看该作者
嗯 问题解决了,确实是定义和声明没有搞清楚,在定义的时候不需要用extern关键字。
谢谢大家了,主要以前写代码的时候没有注意,都这么写的,那个编译器编译的一直都没问题,现在放这里就不行了,不过现在也算学习了,以后写代码要多注意。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

16

帖子

3

粉丝