[問題] struct 強制轉換

看板C_and_CPP (C/C++)作者 (非常念舊)時間9年前 (2016/07/07 13:29), 9年前編輯推噓3(308)
留言11則, 5人參與, 最新討論串1/1
在 android code 裡常看到強制轉換 一個 struct sensors_module_t{ struct hw_module_t common; int (*abc)(); } 而在a程式宣告 sensor dule_t mSensorModule; 然後就直接call hw_get_module(*, (hw_module_t**)&mSensorModule) hw_get_module 的原型是 hw_get_module(const char*,hw_module_t**) 這樣做強制轉換在c來講有甚麼用意嗎? 謝謝。 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.69.181 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1467869390.A.D9F.html ※ 編輯: gn00618777 (61.220.69.181), 07/07/2016 13:31:36 ※ 編輯: gn00618777 (61.220.69.181), 07/07/2016 13:31:59

07/07 14:15, , 1F
話說我覺得你在AndroidDev發的那篇清楚多了
07/07 14:15, 1F

07/07 15:55, , 2F
從你本篇與androidDev板上的另一篇,應該是為了實作
07/07 15:55, 2F

07/07 15:55, , 3F
polymorphism
07/07 15:55, 3F

07/07 17:42, , 4F
07/07 17:42, 4F

07/08 07:58, , 5F
C沒繼承 就用cast 來強制轉換
07/08 07:58, 5F

07/08 12:25, , 6F
在Android HAL前,其實Linux HAL等實作,甚至其它OS內部實作,
07/08 12:25, 6F

07/08 12:26, , 7F
早就這樣玩了... 甚至 socket programming: bind(),connect()
07/08 12:26, 7F

07/08 12:31, , 8F
其中的 sockaddr 就是這樣, 只不過共用的只有 sa_family :P
07/08 12:31, 8F

07/08 12:37, , 9F
再從另一種觀點, 把common當作header,後續當作 payload,
07/08 12:37, 9F

07/08 12:37, , 10F
就是一個封裝的概念.
07/08 12:37, 10F

07/09 09:57, , 11F
謝謝解說,我在Androiddev 也有發表一下心得~一起討論
07/09 09:57, 11F
文章代碼(AID): #1NVUZEsV (C_and_CPP)
文章代碼(AID): #1NVUZEsV (C_and_CPP)