回覆列表
  • 1 # JeremyLinzh

    如果你看到的程式碼都是全域性變數的話,那我勸你還是少看點這種程式碼。一個程式設計師寫的全部變數都是全域性變數的話,這個程式設計師水平絕對不高。全域性變數的維護是非常複雜的,隨著程式碼量的增加,維護的成本絕對是指數級上升的。正確的變數應該都是static型別的,放在一個檔案裡,如果這個變數要給其他檔案呼叫,就應該寫一個Get函式,給其他檔案呼叫。

  • 2 # xfwangqiang

    可能你所見的大多應用比較簡單,或是mcu效能不強,為了降低呼叫函式帶來的效能減弱,使用全域性變數!

    第一種,情況就沒什麼好說的,問題不大,

    第二種,也很常見,我覺得與歷史遺留問題有關。主流mcu上100M好像也就近十五年左右的事。所以mcu效能弱雞是共識,大家都會想個種辦法來提高程式碼的效率,大量使用全域性變數就是其中廣泛使用的一種,也是效率最高的一種!但這確實不符合模組化,高內聚,低耦合的做法,被寫pc應用程式的程式設計師所diss。沒辦法,功能和效能只能優先!

    那麼這種全域性變數所帶來的軟體風險和開發維護困難就無視了嗎?當然不是,對這些全域性變數都要嚴格管理,給每個變數明確的定義,型別和功能,都要用文件說明清楚!讀懂這樣的文件,也就軟體的功能和框架(很可能沒有框架)明白了一大半,那這樣開發和維護都是可以進行下去的。

    回到當前,mcu已經有1Ghz以上的主頻了,選擇200M以上的mcu是件很容易的事了,記憶體也有512kb了,所以,mcu的全域性變數也可以成為歷史,讓我們一起擁抱更適合的軟體開發思想和方法,模組化,面向物件!

  • 3 # 我哈我哈

    為什麼c語言微控制器大量採用全域性變數?一是全域性變數的數值除錯時能實時觀察,而區域性變數不能,這為除錯帶來了很大的方便。二是全域性變數能明顯的提高系統的執行速度,使用區域性變數時,模組之間的通訊就變得很麻煩,增加了系統記憶體的需求和系統的開銷,在時間上沒有全域性變數來的快。雖然全域性變數可能有副作用,但如果控制的好,也是很穩定可靠的,帶來的好處是減小了系統的開銷,提高了系統的處理能力。區域性變數雖然看起來很美,但也有很多的副作用,如增加了系統的開銷,增大了對記憶體的需求,在除錯時,不能實時觀察區域性變數的資料,這些都是使用區域性變數的缺點。微軟的mfc,就是使用訊息在程序之間進行通訊,麻煩的一塌糊塗,程序之間的通訊開銷非常大,效率非常低,這也是mfc難使用的一個原因之一,不僅大家不願使用,我估計微軟自己也不願使用了。事實證明,使用全域性變數,還是很方便和安全的。

  • 4 # 感受世界341

    微控制器記憶體都不多,函式體內的區域性變數都會消耗棧空間,函式巢狀多了一不小心就要破壞堆疊造成一些人眼中所謂程式跑飛,所以我一般都要檢查最大堆疊呼叫深度,如果使用全域性變數則會減小此類問題的發生機率,但是記憶體的有限利用率會大打折扣。

  • 中秋節和大豐收的關聯?
  • 有沒有常常想起一個人,卻不是你身邊的她(他)嗎?