打印

局部变量无法观察,这是何故?

[复制链接]
2145|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fjclcyl|  楼主 | 2010-1-14 15:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fjclcyl 于 2010-1-14 15:14 编辑

C编译器的版本是9.65的**版。
有注意大小写的问题了。watch窗口提示no found.请高手赐教!!!谢谢!!!!!!
沙发
yewuyi| | 2010-1-15 09:00 | 只看该作者
这个是变量作用域的事情。

提示no found,是因为当前CODE还没有确定这个局部变量的作用域,也就是说,这个局部变量此时还没有被定义,只有发现到被定义后,这个no found就会自动消失,并显示它的地址和变量值。

这个是C语言的基础知识,和PIC AND PICC都没关系,在所有的C编译器中都是类似如此。

使用特权

评论回复
板凳
fjclcyl|  楼主 | 2010-1-15 09:27 | 只看该作者

使用特权

评论回复
地板
fjclcyl|  楼主 | 2010-1-15 09:28 | 只看该作者
本帖最后由 fjclcyl 于 2010-1-15 09:29 编辑

回楼上的,你见了附件,就明白我问的了。

未命名.jpg (14.69 KB )

未命名.jpg

使用特权

评论回复
5
yewuyi| | 2010-1-15 10:08 | 只看该作者
你把断点设置到pulse()上看看。

另外,也可能是你的这个变量属于无意义的变量被优化删除掉了。

not found一般就是未成功分配地址的意义。

使用特权

评论回复
6
fjclcyl|  楼主 | 2010-1-18 10:11 | 只看该作者
更换到9.60版本的编译器下,问题解决了。

使用特权

评论回复
7
牛牛特工| | 2010-1-18 15:40 | 只看该作者
本帖最后由 牛牛特工 于 2010-1-18 15:42 编辑

局部变量可在local下查看 前提是你进到了对应的函数
如果定义为static 可在watch中直接看到 但其名称会和函数名结合 变成另一个名称

使用特权

评论回复
8
leizi2008| | 2010-1-19 09:16 | 只看该作者
学习了

使用特权

评论回复
9
xymxym| | 2010-1-19 11:19 | 只看该作者
一般是被优化掉了,如果确实想看这个变量,可以临时把程序改成如下:

     data_in <<=1;
     if (data_in)
           pulse();
调试完后把if那句去掉,或者直接去改变编译环境的优化等级也可以,但这个不建议!

使用特权

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

本版积分规则

个人签名:世道炎凉,有许多声音却没有真理,有一颗良心却各自藏起。

3

主题

16

帖子

0

粉丝