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

看板C_and_CPP作者 (99通未接來電)時間9年前 (2014/08/27 23:21), 編輯推噓1(1014)
留言15則, 3人參與, 最新討論串1/2 (看更多)
開發平台(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

08/28 01:23, , 1F
3被兩個檔案include就爆炸了吧
08/28 01:23, 1F

08/28 01:24, , 2F
2比較好,可是最好的是不要用global
08/28 01:24, 2F

08/28 01:32, , 3F
不是有個關鍵字叫做extern嗎?
08/28 01:32, 3F

08/28 01:33, , 4F
噢我猜你說的1.就是extern... 不過現在趨勢來講
08/28 01:33, 4F

08/28 01:33, , 5F
通常一個singleton context會比global好用且安全一點
08/28 01:33, 5F

08/28 01:33, , 6F
簡單的說就是singleton一個class 把所有global放裡面
08/28 01:33, 6F

08/28 01:34, , 7F
或者,不要用singleton,想辦法管理傳遞這個context
08/28 01:34, 7F

08/28 01:35, , 8F
總之 global算是挺古典的做法 試試看context吧
08/28 01:35, 8F

08/28 07:45, , 9F
2. 我同事覺得用起來很煩 現在已經是全域變數滿天飛了
08/28 07:45, 9F

08/28 07:46, , 10F
k大的之後切回去c++在玩玩看
08/28 07:46, 10F

08/28 07:48, , 11F
謝謝
08/28 07:48, 11F

08/28 08:42, , 12F
C一樣能用一個struct把全域都包起來傳來傳去
08/28 08:42, 12F

08/28 08:43, , 13F
看你要把它當「單一global」或者「可傳遞的context」
08/28 08:43, 13F

08/28 08:44, , 14F
都可以。context絕對比一狗票global好管理太多 :P
08/28 08:44, 14F

08/29 22:40, , 15F
ok 這二天谷狗研究看看 謝謝
08/29 22:40, 15F
文章代碼(AID): #1J_VUEne (C_and_CPP)
文章代碼(AID): #1J_VUEne (C_and_CPP)