找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

板凳
ID:712493 發(fā)表于 2024-5-6 19:30 | 只看該作者
你這是玄學(xué)吧!,查查有用過被改變變量的函數(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 | 只看該作者
和多少沒關(guān)系吧
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

10#
ID:298743 發(fā)表于 2024-5-7 08:58 | 只看該作者
找到問題了,謝謝二樓大哥提醒,原來是定義數(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 | 只看該作者
我說的補(bǔ)上數(shù)組,就是一個char,運(yùn)行了幾天,突然就變了。導(dǎo)致輸出邏輯錯誤,幸好還有最后的限位開關(guān)作為糾正。就OK了,回歸了。之后再沒發(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í)候可以避免其他源文件訪問,樓主的問題是數(shù)組訪問越界,你這種寫法毫無意義。
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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