[問題] 全域變數宣告方式

作者: gg1122 (99通未接來電)   2014-08-27 23:21:47
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
全域變數宣告方式
1. A.c int global =100 ; 宣告一個 global.h extern int global;
誰include global.h 誰就可call
2. A.c static int global = 100 ; A.h void SetGlobal (int value);
A.h void GetGlobal(int *value );
要寫要讀 請都call 函數
3. 直接在A.h 宣告一個 int global ;
我想請問各位在開發專案 都偏向哪種? 之前我個人的經驗都是用1或2
不過現在團隊都是用3
現在開發的環境 沒有現成同步函數去寫的時候上下去包住
我該建議用2嗎?
另外一般開發專案全域變數 一般都用3嗎?
PS 目前專案單顆ARM控制周邊IC 沒雙CPU
這幾天忽然覺得好像很久沒宣告3的樣子了...以前在寫BCB的時候
好像才會直接弄到該檔案.h 把from public 丟來丟去
另外偷渡一個問題 最近看到一個.h
有一個函數 static inline void function();
static 不是local scope 又宣告在.h 讓人call 這有什麼好處嗎??
還請各位能指導 謝謝
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
作者: azureblaze (AzureBlaze)   2014-08-28 01:23:00
3被兩個檔案include就爆炸了吧2比較好,可是最好的是不要用global
作者: Killercat (殺人貓™)   2014-08-28 01:32:00
不是有個關鍵字叫做extern嗎?噢我猜你說的1.就是extern... 不過現在趨勢來講通常一個singleton context會比global好用且安全一點簡單的說就是singleton一個class 把所有global放裡面或者,不要用singleton,想辦法管理傳遞這個context總之 global算是挺古典的做法 試試看context吧
作者: gg1122 (99通未接來電)   2014-08-28 07:45:00
2. 我同事覺得用起來很煩 現在已經是全域變數滿天飛了k大的之後切回去c++在玩玩看謝謝
作者: Killercat (殺人貓™)   2014-08-28 08:42:00
C一樣能用一個struct把全域都包起來傳來傳去看你要把它當「單一global」或者「可傳遞的context」都可以。context絕對比一狗票global好管理太多 :P
作者: gg1122 (99通未接來電)   2014-08-29 22:40:00
ok 這二天谷狗研究看看 謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com