找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1020|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

這是一個沒有解決的問題

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

截圖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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:814525 發(fā)表于 2024-8-26 17:52 | 只看該作者
設(shè)為全局變量試試
回復(fù)

使用道具 舉報

板凳
ID:344848 發(fā)表于 2024-8-27 06:55 | 只看該作者
這涉及到局部變量和全局變量的問題,搞清楚它們的關(guān)系,可以解決上述問題。
回復(fù)

使用道具 舉報

地板
ID:134430 發(fā)表于 2024-8-27 22:44 | 只看該作者
先謝謝張?zhí)鞄熀蚫onglw朋友!
試了,不行的,不管是局部變量還是全局變量,都不能睡意改變值,必須是extern(外部變量)才能改變值。
下面的兩個圖,一個是局部的,一個是全局的,沒錯吧?

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

截圖08.png

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

截圖09.png
回復(fù)

使用道具 舉報

5#
ID:134430 發(fā)表于 2024-8-27 22:53 | 只看該作者
先謝謝張?zhí)鞄熀蚫onglw朋友!
關(guān)于局部變量和全局變量,早就試了,不行的,必須是extern(外部變量)才能隨意變值調(diào)試。
下面的兩個圖,一個是局部的,一個是旗艦店,沒錯吧。

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

截圖08.png

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

截圖09.png
回復(fù)

使用道具 舉報

6#
ID:466250 發(fā)表于 2024-8-28 00:18 | 只看該作者
只看到定義,沒看到使用過程
回復(fù)

使用道具 舉報

7#
ID:134430 發(fā)表于 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時候的運(yùn)行情況 。
要想看到特定條件下的情況,必須把這個變量在其他函數(shù)中定義,然后在本函數(shù)中聲明是外部變量。
這個問題在keil4 之前是沒有的,也就是在w10 使用keil5  調(diào)試時才發(fā)現(xiàn)的。
這樣說清楚了吧。
回復(fù)

使用道具 舉報

8#
ID:466250 發(fā)表于 2024-8-28 10:43 | 只看該作者
只能說明現(xiàn)在還是處于局部變量上,加個關(guān)鍵詞給他,static
回復(fù)

使用道具 舉報

9#
ID:134430 發(fā)表于 2024-8-28 15:49 | 只看該作者
藍(lán)藍(lán)小星星 發(fā)表于 2024-8-28 10:43
只能說明現(xiàn)在還是處于局部變量上,加個關(guān)鍵詞給他,static

剛才試了,不行。
static 是靜態(tài)變量,它的作用是在下次啟動時保持值不變。
現(xiàn)在的問題是一個普通變量,在調(diào)試過程中需要改變值看看效果。
回復(fù)

使用道具 舉報

10#
ID:466250 發(fā)表于 2024-8-28 16:14 | 只看該作者
你是跨頁,多個.c文件使用了相同名字的變量了吧?感覺就是這樣所以才需要 extern
回復(fù)

使用道具 舉報

11#
ID:59202 發(fā)表于 2024-8-28 16:53 | 只看該作者
你最好把程序都貼出來,估計你也不太清楚局部變量和全局變量的深層次使用。局部變量和全局變量是可以同名的,但局部變量使用時會屏蔽同名的全局變量,說穿了還是兩個不同的變量。你首先要想清楚怎么使用,在同一個c文件中不同的函數(shù)中還是不同的c文件中
回復(fù)

使用道具 舉報

12#
ID:134430 發(fā)表于 2024-8-30 10:39 | 只看該作者
問題解決了,重裝了keil5, 這次安裝在c盤,把以前安裝過的痕跡全部刪除干凈。前幾次都是安裝在其他盤。
折騰了好幾天,謝謝大家!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表