大多數單片機程序采用全局變量的形式是為什么呢?
內存占用的可預測性:在單片機程序中,可預測的內存占用是很重要的因素。靜態(tài)分配可以在編譯過程中確定所需的內存,并且分配過程在程序啟動之前就已完成。這使得靜態(tài)分配成為單片機程序的理想選擇。
??臻g的限制和風險:棧分配具有一定的動態(tài)性,但整體內存占用不易預測。單片機程序通常將棧大小設置較小,以避免棧溢出的風險。棧分配相對于動態(tài)分配的優(yōu)勢在于,??臻g的申請和釋放非常簡單,因此仍然是可以接受的選擇。
動態(tài)內存分配的不適用性:動態(tài)內存分配對于單片機來說并不太適合。在單片機環(huán)境中,動態(tài)內存分配通常是緩慢且復雜的,需要額外的數據結構來記錄已分配的內存,并在釋放時進行適當的處理。因此,大多數單片機程序開發(fā)避免使用動態(tài)內存分配。
另外,使用全局變量還有一個小技巧是優(yōu)化返回值。默認情況下,返回值放在棧空間中,這在多層函數調用時會產生賦值的時間浪費。而使用全局變量可以避免這些時間開銷。
總的來說,在單片機程序開發(fā)中,大量使用全局變量是由于環(huán)境和資源限制所做出的選擇。而在正常的計算機程序開發(fā)中,當沒有嚴格的資源限制時,更傾向于更好的可復用性和模塊化設計。
剛好我整理了一套嵌入式學習方向,其中技巧和干貨簡直滿滿,里面包含了編程教學、問題視頻講解、畢設800套和語言類教學,只需要回復個6,免費發(fā)給你,一條龍服務讓你毫無顧慮好好學習