找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 628|回复: 11
打印 上一主题 下一主题
收起左侧

这是一个没有解决的问题

[复制链接]
跳转到指定楼层
楼主
这是一个一个月前提过的问题,一直没有解决,今天再提,看看有没有高手帮助解决。
问题是这样的:
w10运行keil5, 如图,
ushar NowTem=0 是 main()中的一个局部变量,在watch 中想给其赋一个值试试,结果马上又恢复0,不能赋值,很不方便调试。
如果,先将其在其他任意一个函数(即使与本函数main没有关系)中定义 uchar NowTem=0;   然后再在main 中声明 extern uchar NowTem; 就行了,想怎么调试都行。
所有的变量都是这样的:要想改变值调试,必须在其他函数中定义,然后声明extern.
这个问题在 keil4 之前从未出现过,有朋友说,是 keil5 的版本问题,我在下载过几次,在 keil 官网也下载过,结果都是这样的,官网上有4个版本,我下的是C51, 官网上没提是32还是64的。
朋友们,有没有碰到过这个问题的?

截图03.png (14.44 KB, 下载次数: 10)

截图03.png

截图04.png (13.5 KB, 下载次数: 9)

截图04.png

截图05.png (13.48 KB, 下载次数: 9)

截图05.png

截图06.png (13.08 KB, 下载次数: 11)

截图06.png

截图07.png (13.63 KB, 下载次数: 7)

截图07.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:814525 发表于 2024-8-26 17:52 | 只看该作者
设为全局变量试试
回复

使用道具 举报

板凳
ID:344848 发表于 2024-8-27 06:55 | 只看该作者
这涉及到局部变量和全局变量的问题,搞清楚它们的关系,可以解决上述问题。
回复

使用道具 举报

地板
ID:134430 发表于 2024-8-27 22:44 | 只看该作者
先谢谢张天师和donglw朋友!
试了,不行的,不管是局部变量还是全局变量,都不能睡意改变值,必须是extern(外部变量)才能改变值。
下面的两个图,一个是局部的,一个是全局的,没错吧?

截图08.png (15.14 KB, 下载次数: 11)

截图08.png

截图09.png (14.29 KB, 下载次数: 9)

截图09.png
回复

使用道具 举报

5#
ID:134430 发表于 2024-8-27 22:53 | 只看该作者
先谢谢张天师和donglw朋友!
关于局部变量和全局变量,早就试了,不行的,必须是extern(外部变量)才能随意变值调试。
下面的两个图,一个是局部的,一个是旗舰店,没错吧。

截图08.png (15.14 KB, 下载次数: 9)

截图08.png

截图09.png (14.29 KB, 下载次数: 12)

截图09.png
回复

使用道具 举报

6#
ID:466250 发表于 2024-8-28 00:18 | 只看该作者
只看到定义,没看到使用过程
回复

使用道具 举报

7#
ID:134430 发表于 2024-8-28 09:12 | 只看该作者
蓝蓝小星星 发表于 2024-8-28 00:18
只看到定义,没看到使用过程

使用过程,就是改变变量的值,然后看程序运行情况,
譬如,if(NowTem==23){......}     if(NowTem==56){......}  
现在是不能随意改变,永远是初始值,所以不能马上看到NowTem==23 或56时候的运行情况 。
要想看到特定条件下的情况,必须把这个变量在其他函数中定义,然后在本函数中声明是外部变量。
这个问题在keil4 之前是没有的,也就是在w10 使用keil5  调试时才发现的。
这样说清楚了吧。
回复

使用道具 举报

8#
ID:466250 发表于 2024-8-28 10:43 | 只看该作者
只能说明现在还是处于局部变量上,加个关键词给他,static
回复

使用道具 举报

9#
ID:134430 发表于 2024-8-28 15:49 | 只看该作者
蓝蓝小星星 发表于 2024-8-28 10:43
只能说明现在还是处于局部变量上,加个关键词给他,static

刚才试了,不行。
static 是静态变量,它的作用是在下次启动时保持值不变。
现在的问题是一个普通变量,在调试过程中需要改变值看看效果。
回复

使用道具 举报

10#
ID:466250 发表于 2024-8-28 16:14 | 只看该作者
你是跨页,多个.c文件使用了相同名字的变量了吧?感觉就是这样所以才需要 extern
回复

使用道具 举报

11#
ID:59202 发表于 2024-8-28 16:53 | 只看该作者
你最好把程序都贴出来,估计你也不太清楚局部变量和全局变量的深层次使用。局部变量和全局变量是可以同名的,但局部变量使用时会屏蔽同名的全局变量,说穿了还是两个不同的变量。你首先要想清楚怎么使用,在同一个c文件中不同的函数中还是不同的c文件中
回复

使用道具 举报

12#
ID:134430 发表于 2024-8-30 10:39 | 只看该作者
问题解决了,重装了keil5, 这次安装在c盘,把以前安装过的痕迹全部删除干净。前几次都是安装在其他盘。
折腾了好几天,谢谢大家!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表