推 yzugsr:沒有 08/03 16:01
→ xinu:thanks,所以python只能用指到struct指到頭的方式囉? 08/03 17:07
→ qrtt1:有什麼理由一定要那樣寫@@? 08/04 10:08
推 ykjiang:就算是 C ,最好也不要這樣寫吧;既難看又不跨平台 08/04 13:25
→ xinu:Linux裡的list就是這樣寫的,沒人說過Linux難看又不跨平台吧.. 08/04 19:46
→ xinu:剛學Python,好奇在低階語言裡的東西Python有沒有對應的技術.. 08/04 19:48
推 ykjiang:我先收回不跨平台評語,但我真看不懂在寫啥,確定沒筆誤? 08/04 23:20
→ ykjiang:C 要 list 也沒人會這樣寫吧... 08/04 23:21
推 ibmibmibm:C在stddef.h有offsetof的macro 08/05 01:15
推 qrtt1:python 就有 list 了, 需要自己搞一個嗎@@? 08/05 08:29
推 ykjiang:offsetof 會寫在 stddef.h 就是因為各平台的寫法不同 08/05 12:16
→ yjc1:在C中這技巧很常見,尤其在 embedded 平台. 可以大幅簡化程式 08/05 23:15
→ yjc1:btw,python與C的哲學不同,用到這種設計通常表示出了問題, 08/05 23:18
→ yjc1:一定有更好的設計或方法取代 08/05 23:19
推 ykjiang:這行明顯有誤,怎沒人提 ptr= ptr - ((struct A *)0)->a; 08/05 23:50
→ ykjiang:有 offsetof 用,就乖乖用比較不會出錯,也可避掉平台問題 08/05 23:52
→ xinu:我想不用stddef.h的原因是因為Linux Kernel不用C lib的定義 08/06 23:04
→ xinu:應該是ptr-(void *)..原list.h寫的沒那麼粗糙 08/06 23:12
→ xinu:剛好看到Linux裡的這段覺得很有趣, 想用剛學的Python作作看 08/06 23:16
→ xinu:他這樣寫的好處應該是不需要Object之類的東西把大家串起來 08/06 23:18
推 ykjiang:剛稍微看了這個 list.h ,果然是個精緻的設計; 08/08 00:31
→ ykjiang:代碼高度可重用,空間效率也比經典的 C++ template 版本好 08/08 00:36
→ ykjiang:不過這種用法在 Python 乃至 JAVA 上,都沒多大意義 08/08 00:38
→ ykjiang:因這類語言原本就可只寫一套「演算法」來操作「各類資料」 08/08 00:47
→ ykjiang:,且不會有 C/C++ macro 或 template 展開後變癡肥的問題 08/08 01:17