看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 問題(Question): 常常會有些建議: 少用全域變數. 1.那是否我去宣告一個function 專門來return static variable就比較好呢? 2.如果用這樣的方式, 在外部使用function 內部的static array 會不會有不好的事情?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.137
diabloevagto:不用全域變數的原因是因為不要大家都能用 06/10 15:49
diabloevagto:你總不可能希望你的東西大家都能用吧 06/10 15:50
diabloevagto:你不應該內部外部亂搞,如果你遇到這個問題應該要重 06/10 15:50
diabloevagto:新思考你的架構該怎樣修改 06/10 15:50
我的理解是用全域變數, 比較不好maintain function之間繼承的關系. 我總覺得有時候很難管理變數...否則就要傳入大量的parameter 我有點不知道方向和該怎麼達到平衡. ※ 編輯: OppOops 來自: 140.112.30.137 (06/10 16:04)
EdisonX:全域變數還是有存在的必要,不然 rand 就寫不出來,大量 06/10 19:06
EdisonX:param 的話,寫過 Win32 API 都早已習已為常 (相信你的參數 06/10 19:07
EdisonX:應沒它來得多),另外有時為了加速,是真的有人在程式初始 06/10 19:08
EdisonX:化時就直接先建表放著查詢(如 sin table),小弟比較有疑問 06/10 19:09
EdisonX:的是,「C語言 function 之間繼承關係」指的是?? 06/10 19:10
LPH66:個人倒覺得下篇推文說的 context 會比全域變數來得好 06/10 21:40
LPH66:就拿 rand 為例 Java 的實作是把目前狀態放在一個物件裡 06/10 21:41
LPH66:因此我們可以有許多個完全不互相影響的亂數產生器實體 06/10 21:41
LPH66:這在概念上跟 context 還滿像的... 06/10 21:42
loveme00835:C++的亂數也是阿~ 06/10 21:49
EdisonX:sorry,可能我誤解了原po本意,我是看到平台上寫 C,所以沒對 06/11 00:04
EdisonX:dp 多加連想。@loveme~ : 疑!我一直以為亂數有用 static 06/11 00:05
EdisonX:存seed.. 06/11 00:05
EdisonX:@LPH66: 謝謝您提供的資料。 :) 06/11 00:07
yoco315:新的設計已經改成user自己保管random狀態了.. 06/11 00:12
EdisonX:@yoco315: 您指的是類似變成 uint rand(uint seed) 嗎 ? 06/11 00:16
loveme00835:engine-distribution 的架構 06/11 00:25
loveme00835:加上 device 就更複雜了 06/11 00:26
EdisonX:了解,大致知道怎做了,謝謝 loveme~ 解答 :) 06/11 00:28
thinklu:我覺得少用global var是因為如果你這個程式會create很多個 06/11 05:28
thinklu:session~那這些session會全部用到同一個global var~這樣的 06/11 05:29
thinklu:結果~相信不會是你原本打算做的事~所以儘量避免掉 06/11 05:30
thinklu:因為你的想法應該會是獨立的Session用到獨立的var~這樣才 06/11 05:32
thinklu:對~一些意見給你參考囉~^^ 06/11 05:32