打印

如果我在函数里面定义以下四个全局变量时

[复制链接]
1664|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xzhenggen|  楼主 | 2007-5-22 08:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xzhenggen|  楼主 | 2007-5-22 11:19 | 只看该作者

这个问题没有人做过吗》

使用特权

评论回复
板凳
TRUE_ARM| | 2007-5-22 12:35 | 只看该作者

“函数里面定义以下四个全局变量”?

概念没有搞清楚。什么是全局变量、局部变量、局部全局变量、C51的DATA、IDATA、XDATA 区?以及编译器编译连接时全局变量、局部变量的地址分配?

使用特权

评论回复
地板
hqgboy| | 2007-5-22 12:50 | 只看该作者

你可以在KEIL里试试。

使用特权

评论回复
5
huweiping| | 2007-5-22 13:35 | 只看该作者

mcs51才128个空间,那么多的话要扩展吧

使用特权

评论回复
6
xzhenggen|  楼主 | 2007-5-22 13:37 | 只看该作者

函数体之外定义的变量不就是全局变量吗?

使用特权

评论回复
7
aibxyz| | 2007-5-22 13:41 | 只看该作者

你这不是全局变量

如果是52以上,有256字节的话
你这个并不会用掉全部(只是128字节了)
但要注意,堆栈要占用一定空间
由于你这个是局部变量,所以,空间和其他不冲突的变量是可能重叠的
这个由编译器和编译设置有关

使用特权

评论回复
8
xzhenggen|  楼主 | 2007-5-22 14:42 | 只看该作者

比如我在主函数或者子函数之外定义声明的变量,不是全局

是不是要在变量的前面加入extern,岂不成了外部变量?

比如:unsigned char idata temp;
      unsigned char tv;
      unsigned int wds;
 void delay()
{...}
void main()
{...}
如果说上面声明定义的变量不是全局变量,那么如何声明定义变量才成为全局变量?

使用特权

评论回复
9
aibxyz| | 2007-5-22 14:54 | 只看该作者

你在函数外面定义的是全局变量

不过你前面说的是在函数里定义,这个就不是了
全局变量么,就不可能和其他变量共享资源了

使用特权

评论回复
10
MHQ_11| | 2007-5-22 16:41 | 只看该作者

这么多应该定义在外存中.

在内存中定义这么多是不可靠的.
即使你没有其他全局变量.它们也会挤占堆栈空间的,一般的编译系统并不会分辨出会不会挤占堆栈区间.程序运行时会出现莫名其妙的错误.
建议定义到外部存储区.

使用特权

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

本版积分规则

55

主题

531

帖子

1

粉丝