看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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