打印
[PIC®/AVR®/dsPIC®产品]

全局变量、局部变量、静态局部变量

[复制链接]
1302|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
风之牧|  楼主 | 2014-12-25 15:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
程序中在一个子函数中定义了一个局部变量,main函数while(1)之前调用了这个函数,然后就一直不停的从main函数执行,执行不到while(1)大循环。把这个变量变为全局变量或者用static声明为静态就正常了。不知道有没有人知道为什么。在网上找了一下,发现有人遇到过,不过我发现并不是“out of scope”的问题。“out of scope”应该是因为程序未执行到这个局部变量,没有分配存储空间造成的。我用断点看了一下watch窗口,局部变量在未执行到时一直显示“out of scope”而执行到的时候是有内存地址的。以下是在网上找到的一个帖子




沙发
aozima| | 2014-12-25 17:00 | 只看该作者
本帖最后由 aozima 于 2014-12-25 17:02 编辑

1. 执行结果不对是因为 栈溢出

2. 显示
out of scope
是因为生命周期和作用域的原因。

使用特权

评论回复
板凳
风之牧|  楼主 | 2014-12-26 11:39 | 只看该作者
aozima 发表于 2014-12-25 17:00
1. 执行结果不对是因为 栈溢出

2. 显示

栈溢出?能不能麻烦讲解一下?或者我怎样才能检测到?

使用特权

评论回复
地板
lanmp| | 2014-12-29 17:08 | 只看该作者
使指针变量么?把代码贴出来

使用特权

评论回复
5
yewuyi| | 2014-12-30 08:17 | 只看该作者
贴最简测试代码

使用特权

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

本版积分规则

23

主题

313

帖子

1

粉丝