找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

C語(yǔ)言定義的全局變量太多,有些變量會(huì)在運(yùn)行中自己改變,該怎么辦

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:298743 發(fā)表于 2024-5-6 17:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
謝謝大家
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2024-5-6 18:20 | 只看該作者
用了數(shù)組了吧?訪問(wèn)越界。
回復(fù)

使用道具 舉報(bào)

板凳
ID:712493 發(fā)表于 2024-5-6 19:30 | 只看該作者
你這是玄學(xué)吧!,查查有用過(guò)被改變變量的函數(shù)吧!
回復(fù)

使用道具 舉報(bào)

地板
ID:299872 發(fā)表于 2024-5-6 19:39 | 只看該作者
估計(jì)是溢出了吧。
回復(fù)

使用道具 舉報(bào)

5#
ID:1109793 發(fā)表于 2024-5-6 20:04 | 只看該作者
和多少?zèng)]關(guān)系吧
回復(fù)

使用道具 舉報(bào)

6#
ID:1109793 發(fā)表于 2024-5-6 20:07 | 只看該作者
和多少?zèng)]關(guān)系吧,是真的會(huì)變。不定啥時(shí)候就變了,雖然比較少見(jiàn),但是真的會(huì)變哦。
回復(fù)

使用道具 舉報(bào)

7#
ID:298743 發(fā)表于 2024-5-7 08:36 | 只看該作者
Hephaestus 發(fā)表于 2024-5-6 18:20
用了數(shù)組了吧?訪問(wèn)越界。

對(duì),用了數(shù)組
回復(fù)

使用道具 舉報(bào)

8#
ID:236035 發(fā)表于 2024-5-7 08:43 | 只看該作者
我見(jiàn)過(guò)別人寫(xiě)的,全局變量會(huì)變。建議盡量少用全局變量,盡量使用局部變量。
回復(fù)

使用道具 舉報(bào)

9#
ID:298743 發(fā)表于 2024-5-7 08:45 | 只看該作者
應(yīng)該是二樓大佬說(shuō)的情況,用的數(shù)組比較多,訪問(wèn)越界了,能怎么解決
回復(fù)

使用道具 舉報(bào)

10#
ID:298743 發(fā)表于 2024-5-7 08:58 | 只看該作者
找到問(wèn)題了,謝謝二樓大哥提醒,原來(lái)是定義數(shù)組的時(shí)候定義少了
回復(fù)

使用道具 舉報(bào)

11#
ID:554500 發(fā)表于 2024-5-7 11:04 | 只看該作者
建議使用靜態(tài)全局變量,只能在當(dāng)前文件內(nèi)使用。如果其他文件想要使用該變量,那就用函數(shù)傳遞的方式。
例如:
static u8 value;  //靜態(tài)全局變量
u8 Get_value(void)
{
    return value;
}
或者
void Get_value(u8 *val)
{
    *val = value;
}

如果傳遞的變量比較多的,可以使用結(jié)構(gòu)體+指針。
回復(fù)

使用道具 舉報(bào)

12#
ID:1109793 發(fā)表于 2024-5-7 13:59 | 只看該作者
我說(shuō)的補(bǔ)上數(shù)組,就是一個(gè)char,運(yùn)行了幾天,突然就變了。導(dǎo)致輸出邏輯錯(cuò)誤,幸好還有最后的限位開(kāi)關(guān)作為糾正。就OK了,回歸了。之后再?zèng)]發(fā)現(xiàn)。
回復(fù)

使用道具 舉報(bào)

13#
ID:883242 發(fā)表于 2024-5-7 21:08 | 只看該作者
18701931930 發(fā)表于 2024-5-7 11:04
建議使用靜態(tài)全局變量,只能在當(dāng)前文件內(nèi)使用。如果其他文件想要使用該變量,那就用函數(shù)傳遞的方式。
例如 ...

靜態(tài)全局變量只有在程序正確的時(shí)候可以避免其他源文件訪問(wèn),樓主的問(wèn)題是數(shù)組訪問(wèn)越界,你這種寫(xiě)法毫無(wú)意義。
回復(fù)

使用道具 舉報(bào)

14#
ID:517951 發(fā)表于 2024-5-10 07:46 | 只看該作者
要檢查一下電源是否有尖峰干擾, 比如繼電器開(kāi)關(guān)動(dòng)作, 馬達(dá)轉(zhuǎn)動(dòng)停止, 這些會(huì)對(duì)單片機(jī)的程序運(yùn)行產(chǎn)生影響: SRAM的值發(fā)生意外變動(dòng).  再查一下其他的函數(shù)是否有意外改動(dòng)全局變量值, 畢竟全局變量程序運(yùn)行全程都可以改變.
回復(fù)

使用道具 舉報(bào)

15#
ID:883242 發(fā)表于 2024-5-10 16:49 | 只看該作者
rayin 發(fā)表于 2024-5-10 07:46
要檢查一下電源是否有尖峰干擾, 比如痰縉骺囟�, 馬達(dá)轉(zhuǎn)動(dòng)停止, 這些會(huì)對(duì)單片機(jī)的程序運(yùn)行產(chǎn)生影響: SR ...

那早就是死機(jī)了,沒(méi)機(jī)會(huì)輪到RAM變化。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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