→ sarafciel: 呃 你貼了一段C99的code 然後問說在C99怎麼寫?XD 12/11 09:05
推 SocketAM2: 用union可以規格上保證對,但上面這樣我只是找不到對 12/11 09:15
→ SocketAM2: 應的文件而已,看起來也挑不出錯… 12/11 09:15
→ DJWS: 我不確定這樣寫對不對 只是憑感覺寫的... 12/11 09:24
→ DJWS: 另外 當SuperClass內容很多 我想知道如何精簡ClassA和B 12/11 09:26
→ Lipraxde: macro 把裡面重複的包一包? 12/11 10:22
→ DJWS: 有更優雅的方法嗎?我剛發現 #pragma anon_unions 感覺不錯 12/11 10:33
→ sarafciel: 那你為啥不把SuperClass塞進CLassA跟B裡面? 12/11 11:01
→ DJWS: 多很多字 不好讀 C99不支援anonymous struct/union 12/11 11:10
→ DJWS: 樓上你看起來還沒進入狀況 你實際寫一遍就會知道問題在哪了 12/11 11:11
→ DJWS: 然後我也想知道如何精簡 initializer list 12/11 11:15
推 Bencrie: 我相信很多人都幹過 C 模擬 class,沒有搞不清楚這回事XD 12/11 13:10
→ Bencrie: 不然你去讀 gobject 的 source code 看有沒有比較好讀 12/11 13:12
→ DJWS: 我目前就是這樣寫的 但是需要 #pragma anon_unions 12/11 13:13
→ DJWS: 我也相信很多人都幹過C模擬class 但我覺得s還沒進入狀況XD 12/11 13:16
→ DJWS: 然後我是第一次用C模擬class 我之前都寫C++... 12/11 13:17
推 Bencrie: 是喔,那我大概也沒進入狀況吧 12/11 13:20
→ DJWS: 然後 gobject 跟這件事的關聯在哪?我應該看哪一段code? 12/11 13:20
→ sarafciel: 我是不知道你想拿anonymous struct/union來做什麼啦 12/11 21:34
→ sarafciel: 大問題 你可以說說看 我是真的不懂就是XD 12/11 21:37
→ DJWS: 因為要多打.base啊 多很多字 不好讀 12/12 07:07
→ DJWS: 這也就是C11要引進anonymous struct/union的原因 12/12 07:07
→ DJWS: 29行名稱不一致 有的要寫.base 有的不用寫 維護困難 12/12 07:09
→ DJWS: 如果再多做幾層composition 敲鍵盤就敲到崩潰了 XD 12/12 07:09
→ Lipraxde: 那就再繼續用 macro 包啊 12/12 07:27
→ DJWS: 樓上可以示範一下怎麼用 marco 包嗎? 12/12 07:46
→ DJWS: macro 12/12 08:33
→ DJWS: 你這樣沒有解決問題喔 12/12 18:14
→ DJWS: 本來要判斷.base 現在變成要判斷Base_Print 12/12 18:15
→ DJWS: 只存取num 要選Base_Print 只存取a 要選DerivedA_Print 12/12 18:17
→ sarafciel: 我本來就不認為那個是問題呀XD 12/12 20:26
→ sarafciel: Programmer本來就該意識自己在存取的是父類還是子類 12/12 20:26
→ sarafciel: 從這層意義上講 那個base留著才是可讀性高的寫法 12/12 20:26
→ sarafciel: 畢竟我可以透過看有沒有base去推斷要去父還是子找定義 12/12 20:27
→ sarafciel: 只是繼承鍊深的情況下重複寫base很煩我同意 12/12 20:27
→ DJWS: 無法承認自己的無知 這樣不好喔 您多保重 12/12 20:27
→ sarafciel: 所以用包函數的方式去把某個動作拆成分層的子問題 12/12 20:27
→ sarafciel: 然後把定錨父子這件事用型態來解決 12/12 20:28
推 loveme00835: ADT 的概念那麼差還談 OO xD 12/12 20:39
→ DJWS: 樓上離題了吧 12/12 20:47
推 loveme00835: 因為你根本搞不清楚你要做什麼, 先把 data oriented 12/12 21:04
→ loveme00835: 搞成 object oriented, 所以型別命名就錯掉了. objec 12/12 21:04
→ loveme00835: t oriented 著重在 service/behavior 所以真正多型的 12/12 21:04
→ loveme00835: 地方是用 function 來實作, 而不是資料. 如果是 data 12/12 21:04
→ loveme00835: oriented 你的宣告方式就錯了. 順便一提這條超簡單, 12/12 21:04
→ loveme00835: 我回家再貼 12/12 21:04
→ loveme00835: 關鍵字 「macro metaprogramming」 12/12 21:05
→ DJWS: 所以我猜...你應該知道我要做什麼? XD 12/12 21:13
→ Bencrie: 哇賽開始嗆人了 XD 12/13 01:44
推 Bencrie: gobject system 就是 glib 實作的「C 模擬 class」 12/13 01:51
→ Bencrie: 不過它模擬的是那個 OO 行為,不是語法糖 12/13 01:52
→ DJWS: 包成macro原來需要補充這麼多東西 有更優雅的方法嗎? 12/13 07:15
→ DJWS: 對 我就是在問語法糖啊 在C99底下 你得到他了... 12/13 07:16
→ DJWS: 然後我的文章標題問的是 strcut aligment 我壓根沒想問OO 12/13 07:19
→ DJWS: struct 12/13 07:20
→ loveme00835: 但是你的型別就是 OO 的命名風格, 但作的是 DO 12/13 08:50
→ loveme00835: 更優雅? 你何不把共用的 variable 增加到 1k 個看看? 12/13 08:52
→ DJWS: 因為這個案子不會到1k個(記憶體不夠用) 目前就20個而已 12/13 08:56
→ DJWS: 但是derived class目前就有10個 以後還會越來越多 12/13 08:57
→ DJWS: 我修正一下 目前有10個derived class 而且將陸續增加 12/13 08:58
→ DJWS: 程式碼長的很驚人 很難維護 所以想問更精簡的寫法 12/13 09:00
→ loveme00835: 如果是一般作法就會是用很簡單的 nested struct 去實 12/13 09:01
→ DJWS: 然後OO命名風格...這就當作是我的錯誤吧 我應該怎麼命名呢? 12/13 09:02
→ loveme00835: 作, 各自去 maintain 自己的 offset, 但是都可以註冊 12/13 09:02
→ loveme00835: 同樣 prototype 的 accesor function 去操作, 所以根 12/13 09:03
→ loveme00835: 本不需要重複的程式碼, 好不好維護完全是設計問題, 12/13 09:05
推 Bencrie: 那你就寫 code generator 吧。維護的時候用你愛的語法 12/13 09:05
→ loveme00835: 你硬要用 designated initializer 來初始化物件那這 12/13 09:05
→ loveme00835: 樣勢必要有展開的動作 12/13 09:06
→ Bencrie: 要編譯的時候轉成你覺得很醜的 C99 實作 12/13 09:06
→ loveme00835: 所以問題就是, 你不知道你卡的點在哪, 但是別人提的 12/13 09:08
推 Bencrie: 是說幹嘛不直接用 C++? toolchain 不給用嗎 12/13 09:08
→ loveme00835: 方案能解只是需要其他 work, 你不知道也不想作, 因為 12/13 09:09
→ loveme00835: 你想像的 C99 跟別人的很不一樣 12/13 09:10
→ DJWS: 兩位交互詰問我很難回答 XD 我先回答Bencrie板友吧 12/13 09:14
→ DJWS: 我的部分是開發演算法 原始程式碼是javascript 以便可視化 12/13 09:15
→ DJWS: 並且修正演算法 然後再移植到mcu上面 但是雇主提供的開發 12/13 09:16
→ DJWS: 環境只有C99沒有C++ 12/13 09:17
→ DJWS: 再來是loveme前板主 num a b 這些都是演算法參數 12/13 09:20
→ DJWS: 將來會從外部輸入到mcu 但是還沒跟雇主討論這一塊要怎麼做 12/13 09:21
→ DJWS: 於是我暫先弄個initializer 以便測試演算法是否能正常運作 12/13 09:23
→ DJWS: 好了言歸正傳 請問DO風格之下 我應該怎麼命名才對呢? 12/13 09:52
→ DJWS: 我第一次聽到 cfront 我下次遇到雇主跟他聊一下 12/13 13:46
→ DJWS: 剛剛谷歌一陣 cfront是上古時代的東西吧 有點不太現實 12/13 13:53
→ descent: 想說你只是要處理 class 繼承的語法, 所以才提 cfront 12/13 14:23
推 ofd168: 大家脾氣真好,只有我覺得D回文很嗆嗎 12/15 15:47
噓 reemir: :) 12/15 21:04
→ DJWS: 如果各位都覺得我口氣不好 那我道歉 對不起各位 12/15 21:31
推 eye5002003: 我也有上來討論過類似的話題,試圖讓C語言可以別寫的 12/15 22:25
→ eye5002003: 又臭又長,最後都是宣告放棄,C就是要寫的傷眼又費力 12/15 22:27
→ eye5002003: 進入C++11的世界之後又更加無法忍受C了 12/15 22:30
噓 KevinR: ... 12/17 10:20
噓 xvid: 客氣客氣 12/18 08:35
噓 xkhsky: 笑死 12/19 22:31