標(biāo)題: 這是一個(gè)沒有解決的問題 [打印本頁]

作者: wh8010jky    時(shí)間: 2024-8-26 13:07
標(biāo)題: 這是一個(gè)沒有解決的問題
這是一個(gè)一個(gè)月前提過的問題,一直沒有解決,今天再提,看看有沒有高手幫助解決。
問題是這樣的:
w10運(yùn)行keil5, 如圖,
ushar NowTem=0 是 main()中的一個(gè)局部變量,在watch 中想給其賦一個(gè)值試試,結(jié)果馬上又恢復(fù)0,不能賦值,很不方便調(diào)試。
如果,先將其在其他任意一個(gè)函數(shù)(即使與本函數(shù)main沒有關(guān)系)中定義 uchar NowTem=0;   然后再在main 中聲明 extern uchar NowTem; 就行了,想怎么調(diào)試都行。
所有的變量都是這樣的:要想改變值調(diào)試,必須在其他函數(shù)中定義,然后聲明extern.
這個(gè)問題在 keil4 之前從未出現(xiàn)過,有朋友說,是 keil5 的版本問題,我在下載過幾次,在 keil 官網(wǎng)也下載過,結(jié)果都是這樣的,官網(wǎng)上有4個(gè)版本,我下的是C51, 官網(wǎng)上沒提是32還是64的。
朋友們,有沒有碰到過這個(gè)問題的?

截圖03.png (14.44 KB, 下載次數(shù): 11)

截圖03.png

截圖04.png (13.5 KB, 下載次數(shù): 11)

截圖04.png

截圖05.png (13.48 KB, 下載次數(shù): 10)

截圖05.png

截圖06.png (13.08 KB, 下載次數(shù): 11)

截圖06.png

截圖07.png (13.63 KB, 下載次數(shù): 8)

截圖07.png

作者: 張?zhí)鞄?nbsp;   時(shí)間: 2024-8-26 17:52
設(shè)為全局變量試試
作者: donglw    時(shí)間: 2024-8-27 06:55
這涉及到局部變量和全局變量的問題,搞清楚它們的關(guān)系,可以解決上述問題。
作者: wh8010jky    時(shí)間: 2024-8-27 22:44
先謝謝張?zhí)鞄熀蚫onglw朋友!
試了,不行的,不管是局部變量還是全局變量,都不能睡意改變值,必須是extern(外部變量)才能改變值。
下面的兩個(gè)圖,一個(gè)是局部的,一個(gè)是全局的,沒錯(cuò)吧?

截圖08.png (15.14 KB, 下載次數(shù): 12)

截圖08.png

截圖09.png (14.29 KB, 下載次數(shù): 10)

截圖09.png

作者: wh8010jky    時(shí)間: 2024-8-27 22:53
先謝謝張?zhí)鞄熀蚫onglw朋友!
關(guān)于局部變量和全局變量,早就試了,不行的,必須是extern(外部變量)才能隨意變值調(diào)試。
下面的兩個(gè)圖,一個(gè)是局部的,一個(gè)是旗艦店,沒錯(cuò)吧。

截圖08.png (15.14 KB, 下載次數(shù): 10)

截圖08.png

截圖09.png (14.29 KB, 下載次數(shù): 15)

截圖09.png

作者: 藍(lán)藍(lán)小星星    時(shí)間: 2024-8-28 00:18
只看到定義,沒看到使用過程
作者: wh8010jky    時(shí)間: 2024-8-28 09:12
藍(lán)藍(lán)小星星 發(fā)表于 2024-8-28 00:18
只看到定義,沒看到使用過程

使用過程,就是改變變量的值,然后看程序運(yùn)行情況,
譬如,if(NowTem==23){......}     if(NowTem==56){......}  
現(xiàn)在是不能隨意改變,永遠(yuǎn)是初始值,所以不能馬上看到NowTem==23 或56時(shí)候的運(yùn)行情況 。
要想看到特定條件下的情況,必須把這個(gè)變量在其他函數(shù)中定義,然后在本函數(shù)中聲明是外部變量。
這個(gè)問題在keil4 之前是沒有的,也就是在w10 使用keil5  調(diào)試時(shí)才發(fā)現(xiàn)的。
這樣說清楚了吧。
作者: 藍(lán)藍(lán)小星星    時(shí)間: 2024-8-28 10:43
只能說明現(xiàn)在還是處于局部變量上,加個(gè)關(guān)鍵詞給他,static
作者: wh8010jky    時(shí)間: 2024-8-28 15:49
藍(lán)藍(lán)小星星 發(fā)表于 2024-8-28 10:43
只能說明現(xiàn)在還是處于局部變量上,加個(gè)關(guān)鍵詞給他,static

剛才試了,不行。
static 是靜態(tài)變量,它的作用是在下次啟動(dòng)時(shí)保持值不變。
現(xiàn)在的問題是一個(gè)普通變量,在調(diào)試過程中需要改變值看看效果。
作者: 藍(lán)藍(lán)小星星    時(shí)間: 2024-8-28 16:14
你是跨頁,多個(gè).c文件使用了相同名字的變量了吧?感覺就是這樣所以才需要 extern
作者: xxxevery    時(shí)間: 2024-8-28 16:53
你最好把程序都貼出來,估計(jì)你也不太清楚局部變量和全局變量的深層次使用。局部變量和全局變量是可以同名的,但局部變量使用時(shí)會(huì)屏蔽同名的全局變量,說穿了還是兩個(gè)不同的變量。你首先要想清楚怎么使用,在同一個(gè)c文件中不同的函數(shù)中還是不同的c文件中
作者: wh8010jky    時(shí)間: 2024-8-30 10:39
問題解決了,重裝了keil5, 這次安裝在c盤,把以前安裝過的痕跡全部刪除干凈。前幾次都是安裝在其他盤。
折騰了好幾天,謝謝大家!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1