推 ghost90331: Guru 06/15 01:48
→ eva19452002: 有gpt,你不用再買任何一本書 06/15 06:36
推 Inglenook: C不OO 寫design pattern會很痛苦吧 06/15 08:28
→ shooter555: 就一樣看c++的書吧 反正通用 只是C很多東西要自己刻 06/15 09:45
→ shooter555: 是不知道有沒有書是在教用C寫OOP 要不然就是拿linux 06/15 09:47
→ shooter555: kernel出來看 06/15 09:47
噓 final01: 你有先問chatGPT嗎 06/15 10:16
推 knme: 提升code品質看紀律 可以看clean code/軟體工程 06/15 10:24
推 dryman: 21st Century C 06/15 10:32
推 Apache: 改用Rust就是最好的pattern 06/15 11:16
→ descent: C专家编程, C陷阱与缺陷 06/15 11:40
→ descent: C语言接口与实现:创建可重用软件的技术 06/15 11:40
→ descent: C语言程序设计:现代方法(第2版‧修订版) 06/15 11:40
→ nicepeter: 同樣疑慮,C沒有物件導向,做design pattern有部分方 06/15 11:42
→ nicepeter: 法沒辦法實現,考慮用C++或Java嗎? 06/15 11:42
推 henrylin8086: 還在用C的工作應該有其獨特性,應該不是那麼好轉語 06/15 12:12
→ henrylin8086: 言 06/15 12:12
→ shooter555: C oop的三定義都能做到阿 是哪種方法不能實現? 06/15 14:10
→ shooter555: 用strust + function pointer 再把strust pointer定義 06/15 14:57
→ shooter555: 轉換做封裝 06/15 14:57
→ buffalobill: 手刻virtual table啊... 06/15 15:12
推 HuangHedaz: 用c可以實現OO喔 06/15 17:24
→ HuangHedaz: void * object = (struct XX *)malloc(sizeof struct 06/15 17:26
→ HuangHedaz: XX) 06/15 17:26
推 NTUmaki: Coding style 可能可以看 linux kernel? 06/15 17:37
推 leewei05: 推 jserv 大大整理的 你所不知道的 C 語言 06/15 17:57
→ leewei05: 不過裡面的內容很多都會建議去看 C 規格書 XD 06/15 18:00
推 prag222: 都AI寫CODE了還在人工clean code校史 06/15 20:55
推 steviewonder: 你所不知道的C語言 +1 06/15 23:05
→ steviewonder: Linux核心設計 06/15 23:06
→ steviewonder: CSAPP 06/15 23:06
推 Arbin: 如果是像Java那種private、public之類的碗糕C的確沒有,應 06/16 04:07
→ Arbin: 該說做起來很不確實 06/16 04:07
推 IhateOGC: C別鬧了,現在linux kernel都在改語言了 06/16 10:25
推 steviewonder: 很好奇說C別鬧的都寫什麼? 06/16 10:56
推 j0958322080: C 全都是 public,應該沒辦法實作 private? 06/16 11:19
→ qwer338859: 不是寫rust嗎 06/16 11:46
推 shiaoGG: 建議老闆汰換掉這種過時的語言才是最佳解 06/16 12:52
推 sipper: 老闆淘汰員工機率>>>>淘汰語言 06/16 13:55
推 askacis: 一大堆open source都C寫的,還淘汰C咧XD 06/16 14:14
推 askacis: 至於linux kernel,rust也只用在device driver等級的code 06/16 14:22
推 HuangHedaz: 一般來說,程式語言的選擇是根據要寫什麼產品…。 06/16 14:25
推 Bencrie: kernel module 支援用 rust 跟 kernel 改語言?再想想 06/16 20:04
→ Bencrie: C 你可以用 opaque pointer,要藏就藏徹底 06/16 20:05
推 wulouise: design pattern跟語言關係不大吧,要做都是可以 06/17 19:47
→ wulouise: 樓上說的好像比較常指稱pimpl? 06/17 19:47
推 SuperTaco: c雖然不是不能寫oo但是真的很沒必要,想寫oo跟design 06/17 21:06
→ SuperTaco: pattern的話用適合的語言寫會比較好 06/17 21:06
噓 pttano: C沒有物件導向?可憐喔不會C就說咩 06/18 12:34
→ pacino: 我也覺得Linux kernel是最好的教科書。 06/18 15:38
推 Kimheeche: Linux kernel很多物件導向,請看usb driver 06/19 09:37
推 wsad50232: 樓上不要曲解 看到什麼都說是OO 06/21 11:59
→ shooter555: C 可以做private 內外用的strust 定義不同 使用同一個 06/21 14:40
→ shooter555: pointer就好 把所有的function pointer當界面放在上段 06/21 14:41
→ shooter555: 再把private內容放在下段 傳出去的strust 只定義上段 06/21 14:41
→ shooter555: 這樣在其他的地方使用這個strust 就只能使用上段的pub 06/21 14:41
→ shooter555: lic 函式 而下段的就當作private只能在內部被看到 06/21 14:42
→ shooter555: private部份就是不透明指針的作法 public就是透露出去 06/21 16:26
→ shooter555: 的部份 06/21 16:27
推 HowLeeHi: 請問樓上大大可以寫個example嗎?thanks! 06/21 18:26
→ balista: 加上 static, 另外是 struct, 不是 strust 06/21 19:38
→ adamkk: 透過G_DECLARE_DERIVABLE_TYPE及G_DEFINE_TYPE_WITH_PRIVA 06/24 12:33
→ adamkk: TE兩個API將物件定義成衍生類別及含有private attrbutes 06/24 12:35
推 Bencrie: gobject ... 啊我頭好痛 XD 06/26 09:25
→ shooter555: 範例推文打不下 google一下 C的物件導向應該就有 06/26 17:08
→ shooter555: 簡單說 例定義struct _A { struct A }; 在.c檔 然後定 06/26 17:18
→ shooter555: 義struct A { actions } 在.h檔, 那外部引用這個struc 06/26 17:18
→ shooter555: t 的只能看到A的內容而看不到_A的內容, 那將A放在_A的 06/26 17:20
→ shooter555: 開頭 兩者的pointer位址會相同 在利用C型態轉換沒有保 06/26 17:20
→ shooter555: 互的特性 在外面引用的地方將A 傳入動作函式內 在函式 06/26 17:21
→ shooter555: 內在將A 轉換成_A來使用_A的內容 就能得到A內屬於publ 06/26 17:21
→ shooter555: ic 而_A內屬於private的特性 06/26 17:22
推 HowLeeHi: 感謝a大跟s大 07/04 19:33