标题: keil5发生的奇怪问题 watch里的变量,有的可以手动改变,进行单步调试,有的不可以 [打印本页]

作者: wh8010jky    时间: 2024-7-27 20:48
标题: 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。

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


作者: xiaobendan001    时间: 2024-7-28 08:02
不懂,带extern是同一个变量,不带就是两个,你改的可能是另外一个吧
作者: wh8010jky    时间: 2024-7-28 13:41
xiaobendan001 发表于 2024-7-28 08:02
不懂,带extern是同一个变量,不带就是两个,你改的可能是另外一个吧

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

你们的keil5没有这样的问题码?我刚开始在w10里用keil5,  是我的系统有问题?keil4  在我的系统里不能用。
作者: npn    时间: 2024-7-29 11:18
wh8010jky 发表于 2024-7-28 13:41
是的,是同一个变量。怪就怪在必须在两个文件中定义,一个是正常定义(如uchar,  bit  ),  一个是声明外 ...

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





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1