作者gg1122 (99通未接來電)
看板C_and_CPP
標題[問題] 全域變數宣告方式
時間Wed Aug 27 23:21:47 2014
開發平台(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):
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.127.143
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409152910.A.C68.html
→ azureblaze: 3被兩個檔案include就爆炸了吧 08/28 01:23
→ azureblaze: 2比較好,可是最好的是不要用global 08/28 01:24
推 Killercat: 不是有個關鍵字叫做extern嗎? 08/28 01:32
→ Killercat: 噢我猜你說的1.就是extern... 不過現在趨勢來講 08/28 01:33
→ Killercat: 通常一個singleton context會比global好用且安全一點 08/28 01:33
→ Killercat: 簡單的說就是singleton一個class 把所有global放裡面 08/28 01:33
→ Killercat: 或者,不要用singleton,想辦法管理傳遞這個context 08/28 01:34
→ Killercat: 總之 global算是挺古典的做法 試試看context吧 08/28 01:35
→ gg1122: 2. 我同事覺得用起來很煩 現在已經是全域變數滿天飛了 08/28 07:45
→ gg1122: k大的之後切回去c++在玩玩看 08/28 07:46
→ gg1122: 謝謝 08/28 07:48
→ Killercat: C一樣能用一個struct把全域都包起來傳來傳去 08/28 08:42
→ Killercat: 看你要把它當「單一global」或者「可傳遞的context」 08/28 08:43
→ Killercat: 都可以。context絕對比一狗票global好管理太多 :P 08/28 08:44
→ gg1122: ok 這二天谷狗研究看看 謝謝 08/29 22:40