久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12274|回復: 1
打印 上一主題 下一主題
收起左側

C編程中使用全局變量應注意的事項

[復制鏈接]
跳轉到指定樓層
樓主
ID:80436 發表于 2015-5-20 14:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

1、盡量用局部變量替代全局變量。如果用局部變量能實現功能,最好用局部變量。
2、在函數僅僅只是要用到某個全局變量,而無需改動時,就將全局變量通過形參傳遞進來,變成局部變量使用。并在定義時使用const。這是避免全局變量在函數中被意外的改動。如在判斷語句中將'=='誤寫成'='。這時首先因為在函數內的是局部變量所以即使出錯也不會影響全局變量和其他函數或模塊。其次因為定義的是const類型,當發生意外改動時,編譯器會發出錯誤信息或警報,這也就是讓你的程序自動糾錯。這種情況應發生在對模塊內的全局變量的調用,而對于其他模塊的全局變量應通過模塊接口調用。
3、中斷中使用的全局變量,在其他函數內要使用時一定要進入臨界區(也就是關閉中斷)。如果是使用操作系統的話,則在所有使用到與其他任務共享的全局變量的地方都要進臨界區。
4、對于僅在某個函數內使用的全局變量就用靜態局部變量替代。
5、應盡量避免直接操作或調用其他模塊的變量。需要調用或修改其他模塊的變量時,可以通過那個模塊提供的操作接口函數進行操作。比如某個模塊有一個全局的計數值Count,則可以提供函數接口:GetCount()、SetCount()或ReloadCount()。這樣一來,其他模塊要調用Count時就通過這些指定的函數接口。這樣可以降低模塊間的耦合程度。另外如果嫌接口用函數實現過于復雜或是影響速度,則可以用帶參數的宏定義實現。如:
#define GetCount()  (Count)
#define SetCount(num) (Count=(num))
#define ReloadCount() (Count=0)
這樣,使用時與函數調用一樣,但沒有函數調用時的開銷。另外,功能變化是可以將宏定義改成函數,而無需改動調用語句。
6、每個模塊內的全局變量應該用靜態全局變量,一來其他模塊無法直接調用這些變量;二來命名空間不會重疊,在實現一個模塊時無需考慮某個全局變量的名稱是否已被其他模塊使用。如在模塊A中定義靜態變量 static unsigned char Count;在B模塊中,仍可以定義靜態變量 static unsigned char Count;這兩個Count不會相互影響,但是如果定義的是全局變量則不然。
7、模塊間的耦合性就是指當修改其中某個模塊時會影起其他模塊運行結果發生不可預料的變化。如果模塊間是通過直接調用對方內部的全局變量來實現交互,則兩個模塊間的耦合性將會變得復雜而且難以控制。而模塊間的交互通過一個統一的接口函數來實現,使得模塊都無需知道對方模塊內部的具體實現(這也就是面向對象里面的封裝)。當某個模塊內的實現發生改寫或升級時,只要確保模塊接口不變即可。這就大大降低兩模塊間的耦合。在規劃設計模塊時就應認真考慮好模塊的接口,以及與其他模塊的調用關系。所以要記住編程原則:針對接口編程,而不是針對實
現。
8、函數的功能要單一,也就是高內聚性。如果某個函數需要調用很多個全局變量,則說明函數的內聚性不夠高,可以考慮將函數拆分成幾個功能更單一的函數。
9、要記住編程是一種平衡的藝術。沒有程序可以做到十全十美,省空間、速度快、易擴展、易維護、低耦合、功能強大這些是不可能同時兼得的。如要提高程序的可維護性,就必須在性能方面(空間和速度)做出一點犧牲。至于如何平衡,就要看項目的具體要求了。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:110687 發表于 2016-10-25 12:23 | 只看該作者
謝謝樓主的共享,學習了!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久免费精品 | 久久一区二区视频 | 精品一区二区免费视频 | 一级黄色片免费 | 中文字幕欧美激情 | 国产中文字幕一区二区 | 欧美男人天堂 | 三级在线观看视频 | 毛片网站免费观看 | 黄色大片在线 | 欧美在线观看一区二区 | 又黄又爽又刺激的视频 | 色综合天天综合网国产成人网 | 国产精品一区在线 | 午夜精品一区二区三区在线播放 | 久久天天操 | 99在线视频免费观看 | 免费在线观看毛片 | 在线国产91| 午夜av片 | 中文字幕理论片 | av片免费 | 中文av网站 | 伊人国产在线 | 精品综合网| 美女综合网| 精品久久免费视频 | 国产黄色一级片 | 日日av| 久久一级片 | 综合色婷婷一区二区亚洲欧美国产 | 五月激情久久 | 国产美女一区二区 | 少妇一级淫片免费观看 | 国产欧美日韩在线观看 | 激情五月综合 | 国产精品视频免费看 | 欧美日韩伦理 | 国产精品欧美精品 | 亚洲国产精品久久久 | 91网站在线免费观看 |