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。
不懂是什么道理,请高手们帮忙解释一下,谢谢!!
|