![]() |
發布時間: 2024-8-26 13:07
正文摘要:這是一個一個月前提過的問題,一直沒有解決,今天再提,看看有沒有高手幫助解決。 問題是這樣的: w10運行keil5, 如圖, ushar NowTem=0 是 main()中的一個局部變量,在watch 中想給其賦一個值試試,結果馬上又 ... |
問題解決了,重裝了keil5, 這次安裝在c盤,把以前安裝過的痕跡全部刪除干凈。前幾次都是安裝在其他盤。 折騰了好幾天,謝謝大家! |
你最好把程序都貼出來,估計你也不太清楚局部變量和全局變量的深層次使用。局部變量和全局變量是可以同名的,但局部變量使用時會屏蔽同名的全局變量,說穿了還是兩個不同的變量。你首先要想清楚怎么使用,在同一個c文件中不同的函數中還是不同的c文件中 |
你是跨頁,多個.c文件使用了相同名字的變量了吧?感覺就是這樣所以才需要 extern |
藍藍小星星 發表于 2024-8-28 10:43 剛才試了,不行。 static 是靜態變量,它的作用是在下次啟動時保持值不變。 現在的問題是一個普通變量,在調試過程中需要改變值看看效果。 |
只能說明現在還是處于局部變量上,加個關鍵詞給他,static |
藍藍小星星 發表于 2024-8-28 00:18 使用過程,就是改變變量的值,然后看程序運行情況, 譬如,if(NowTem==23){......} if(NowTem==56){......} 現在是不能隨意改變,永遠是初始值,所以不能馬上看到NowTem==23 或56時候的運行情況 。 要想看到特定條件下的情況,必須把這個變量在其他函數中定義,然后在本函數中聲明是外部變量。 這個問題在keil4 之前是沒有的,也就是在w10 使用keil5 調試時才發現的。 這樣說清楚了吧。 |
只看到定義,沒看到使用過程 |
這涉及到局部變量和全局變量的問題,搞清楚它們的關系,可以解決上述問題。 |
設為全局變量試試 |