找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1009|回復: 3
收起左側(cè)

keil5發(fā)生的奇怪問題 watch里的變量,有的可以手動改變,進行單步調(diào)試,有的不可以

[復制鏈接]
ID:134430 發(fā)表于 2024-7-27 20:48 | 顯示全部樓層 |閱讀模式
w10上使用keil5,  發(fā)現(xiàn)watch里的變量,有的可以手動改變,進行單步調(diào)試,有的不可以,因此不能進行單步調(diào)試,如下:
截圖03.png
截圖01.png
截圖02.png


NowT可以改變,s_for_Start1820不能改變,開始不明白是什么原因,
后來無意中發(fā)現(xiàn):只要把main()中的變量,改成extern d的就行,
譬如上1圖中,改為extern uchar s_for_Start1820,   
2圖中改為 uchar s_for_Start1820,     watch 中就可以改變了,就可以單步調(diào)試了,
(1圖是main.c,     2圖是Sever.c  截圖)

更搞不懂的,明明一個變量只在一個文件中出現(xiàn)并使用,也必須在另一個不相干的文件中先定義為 uchar,,
然后在自己所在文件中改成  extern ,
如上面的 NowT,   原本在main 定義為 uchar。現(xiàn)在為了能單步調(diào)試,改成extern,  在其他任何一個文件中定義 uchar。

不懂是什么道理,請高手們幫忙解釋一下,謝謝!

回復

使用道具 舉報

ID:1109793 發(fā)表于 2024-7-28 08:02 | 顯示全部樓層
不懂,帶extern是同一個變量,不帶就是兩個,你改的可能是另外一個吧
回復

使用道具 舉報

ID:134430 發(fā)表于 2024-7-28 13:41 | 顯示全部樓層
xiaobendan001 發(fā)表于 2024-7-28 08:02
不懂,帶extern是同一個變量,不帶就是兩個,你改的可能是另外一個吧

是的,是同一個變量。怪就怪在必須在兩個文件中定義,一個是正常定義(如uchar,  bit  ),  一個是聲明外部聲明。在keil4之前沒有這個問題,keil5里所有的變量但是這樣的要求。

你們的keil5沒有這樣的問題碼?我剛開始在w10里用keil5,  是我的系統(tǒng)有問題?keil4  在我的系統(tǒng)里不能用。
回復

使用道具 舉報

ID:57657 發(fā)表于 2024-7-29 11:18 | 顯示全部樓層
wh8010jky 發(fā)表于 2024-7-28 13:41
是的,是同一個變量。怪就怪在必須在兩個文件中定義,一個是正常定義(如uchar,  bit  ),  一個是聲明外 ...

你要搞清楚Keil用的多少位的編譯器,內(nèi)核是不一樣的:
無標題.png
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表