找回密码
 立即注册

QQ登录

只需一步,快速开始

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

keil5发生的奇怪问题 watch里的变量,有的可以手动改变,进行单步调试,有的不可以

[复制链接]
跳转到指定楼层
楼主
w10上使用keil5,  发现watch里的变量,有的可以手动改变,进行单步调试,有的不可以,因此不能进行单步调试,如下:





NowT可以改变,s_for_Start1820不能改变,开始不明白是什么原因,
后来无意中发现:只要把main()中的变量,改成extern d的就行,
譬如上1图中,改为extern uchar s_for_Start1820,   
2图中改为 uchar s_for_Start1820,     watch 中就可以改变了,就可以单步调试了,
(1图是main.c,     2图是Sever.c  截图)

更搞不懂的,明明一个变量只在一个文件中出现并使用,也必须在另一个不相干的文件中先定义为 uchar,,
然后在自己所在文件中改成  extern ,
如上面的 NowT,   原本在main 定义为 uchar。现在为了能单步调试,改成extern,  在其他任何一个文件中定义 uchar。

不懂是什么道理,请高手们帮忙解释一下,谢谢!!

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

使用道具 举报

沙发
ID:1109793 发表于 2024-7-28 08:02 | 只看该作者
不懂,带extern是同一个变量,不带就是两个,你改的可能是另外一个吧
回复

使用道具 举报

板凳
ID:134430 发表于 2024-7-28 13:41 | 只看该作者
xiaobendan001 发表于 2024-7-28 08:02
不懂,带extern是同一个变量,不带就是两个,你改的可能是另外一个吧

是的,是同一个变量。怪就怪在必须在两个文件中定义,一个是正常定义(如uchar,  bit  ),  一个是声明外部声明。在keil4之前没有这个问题,keil5里所有的变量但是这样的要求。

你们的keil5没有这样的问题码?我刚开始在w10里用keil5,  是我的系统有问题?keil4  在我的系统里不能用。
回复

使用道具 举报

地板
ID:57657 发表于 2024-7-29 11:18 | 只看该作者
wh8010jky 发表于 2024-7-28 13:41
是的,是同一个变量。怪就怪在必须在两个文件中定义,一个是正常定义(如uchar,  bit  ),  一个是声明外 ...

你要搞清楚Keil用的多少位的编译器,内核是不一样的:
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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