推 Ebergies: 建議你假裝沒有這種東西存在,它在以後會阻礙你 11/20 00:33
→ leondemon: 是指Singleton嗎? 11/20 01:14
推 yoco: 恩,假裝沒有這東西對你會有很多好處 11/20 01:35
→ leondemon: 那有什麼辦法可以在不同地方取得同一個物件呢? 11/20 01:57
→ leondemon: 例如一個 global function=> getSharedInstance(); 11/20 01:58
→ leondemon: 然後可以在不需要時手動移除 releaseSharedInstance() 11/20 01:58
→ leondemon: 我以為 Singleton pattern 在 C 應該是蠻常見的... 囧 11/20 01:59
→ Caesar08: 如果用A *a,就可以解決你的第一個問題 11/20 07:27
→ yoco: error1: 對,要把定義移到前面。 11/20 08:28
→ yoco: error2: 請問錯誤訊息是什麼? 11/20 08:28
推 Killercat: 他的error2是由error1引發的 修掉1應該就可以了 11/20 08:59
→ Killercat: 另外Singleton在C並不常見,C幾乎都用Global Extern 11/20 08:59
→ Killercat: 另外實作上Singleton我會建議直接用Loki就好 11/20 09:00
→ Killercat: Loki Singleton_Holder能解決絕大多數的問題 11/20 09:00
→ descent: 乾脆用 global variable 就好 11/20 09:30
推 littleshan: 在不同地方取得同一物件 → 用參數傳遞 11/20 10:38
→ littleshan: 傳參數比較麻煩沒錯,但global state造成的麻煩更大 11/20 10:39
→ littleshan: 但這件事真的要很有經驗才能理解它造成什麼麻煩 11/20 10:41
因為不同的地方之間是無法互相傳遞參數的 因此我才需要一個方法能夠取得同一物件
主要是在程式載入之後,會先執行 __attribute__((constructor)) 的函式
再執行 main()
這些函式需要取得同一物件,並把執行結果放入實體變數 dictionary/map 內。
※ 編輯: leondemon (125.227.48.32), 11/20/2014 12:00:57
→ dirkc: C++很常用的cout/cin即是用extern 11/20 12:16
推 littleshan: 我會思考不用 attribute 的方法 11/21 12:09
→ littleshan: 不過你們的情況可能混合別人的code或是已經改不動 11/21 12:09
→ littleshan: 那就真的沒辦法了 11/21 12:09