[問題] 有關全域變數

看板C_and_CPP (C/C++)作者 (Oops)時間14年前 (2012/06/10 15:39), 編輯推噓4(4024)
留言28則, 6人參與, 最新討論串1/3 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 問題(Question): 常常會有些建議: 少用全域變數. 1.那是否我去宣告一個function 專門來return static variable就比較好呢? 2.如果用這樣的方式, 在外部使用function 內部的static array 會不會有不好的事情?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.137

06/10 15:49, , 1F
不用全域變數的原因是因為不要大家都能用
06/10 15:49, 1F

06/10 15:50, , 2F
你總不可能希望你的東西大家都能用吧
06/10 15:50, 2F

06/10 15:50, , 3F
你不應該內部外部亂搞,如果你遇到這個問題應該要重
06/10 15:50, 3F

06/10 15:50, , 4F
新思考你的架構該怎樣修改
06/10 15:50, 4F
我的理解是用全域變數, 比較不好maintain function之間繼承的關系. 我總覺得有時候很難管理變數...否則就要傳入大量的parameter 我有點不知道方向和該怎麼達到平衡. ※ 編輯: OppOops 來自: 140.112.30.137 (06/10 16:04)

06/10 19:06, , 5F
全域變數還是有存在的必要,不然 rand 就寫不出來,大量
06/10 19:06, 5F

06/10 19:07, , 6F
param 的話,寫過 Win32 API 都早已習已為常 (相信你的參數
06/10 19:07, 6F

06/10 19:08, , 7F
應沒它來得多),另外有時為了加速,是真的有人在程式初始
06/10 19:08, 7F

06/10 19:09, , 8F
化時就直接先建表放著查詢(如 sin table),小弟比較有疑問
06/10 19:09, 8F

06/10 19:10, , 9F
的是,「C語言 function 之間繼承關係」指的是??
06/10 19:10, 9F

06/10 21:40, , 10F
個人倒覺得下篇推文說的 context 會比全域變數來得好
06/10 21:40, 10F

06/10 21:41, , 11F
就拿 rand 為例 Java 的實作是把目前狀態放在一個物件裡
06/10 21:41, 11F

06/10 21:41, , 12F
因此我們可以有許多個完全不互相影響的亂數產生器實體
06/10 21:41, 12F

06/10 21:42, , 13F
這在概念上跟 context 還滿像的...
06/10 21:42, 13F

06/10 21:49, , 14F
C++的亂數也是阿~
06/10 21:49, 14F

06/11 00:04, , 15F
sorry,可能我誤解了原po本意,我是看到平台上寫 C,所以沒對
06/11 00:04, 15F

06/11 00:05, , 16F
dp 多加連想。@loveme~ : 疑!我一直以為亂數有用 static
06/11 00:05, 16F

06/11 00:05, , 17F
存seed..
06/11 00:05, 17F

06/11 00:07, , 18F
@LPH66: 謝謝您提供的資料。 :)
06/11 00:07, 18F

06/11 00:12, , 19F
新的設計已經改成user自己保管random狀態了..
06/11 00:12, 19F

06/11 00:16, , 20F
@yoco315: 您指的是類似變成 uint rand(uint seed) 嗎 ?
06/11 00:16, 20F

06/11 00:25, , 21F
engine-distribution 的架構
06/11 00:25, 21F

06/11 00:26, , 22F
加上 device 就更複雜了
06/11 00:26, 22F

06/11 00:28, , 23F
了解,大致知道怎做了,謝謝 loveme~ 解答 :)
06/11 00:28, 23F

06/11 05:28, , 24F
我覺得少用global var是因為如果你這個程式會create很多個
06/11 05:28, 24F

06/11 05:29, , 25F
session~那這些session會全部用到同一個global var~這樣的
06/11 05:29, 25F

06/11 05:30, , 26F
結果~相信不會是你原本打算做的事~所以儘量避免掉
06/11 05:30, 26F

06/11 05:32, , 27F
因為你的想法應該會是獨立的Session用到獨立的var~這樣才
06/11 05:32, 27F

06/11 05:32, , 28F
對~一些意見給你參考囉~^^
06/11 05:32, 28F
文章代碼(AID): #1Fr4zDs_ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Fr4zDs_ (C_and_CPP)