[问题] struct 强制转换

楼主: gn00618777 (非常念旧)   2016-07-07 13:29:46
在 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来讲有什么用意吗?
谢谢。
作者: james732 (好人超)   2016-07-07 14:15:00
话说我觉得你在AndroidDev发的那篇清楚多了
作者: notBeing (read and be read)   2016-07-07 15:55:00
从你本篇与androidDev板上的另一篇,应该是为了实作polymorphism
作者: james732 (好人超)   2016-07-07 17:42:00
作者: steve1012 (steve)   2016-07-08 07:58:00
C没继承 就用cast 来强制转换
作者: yvb   2016-07-08 12:25:00
在Android HAL前,其实Linux HAL等实作,甚至其它OS内部实作,早就这样玩了... 甚至 socket programming: bind(),connect()其中的 sockaddr 就是这样, 只不过共用的只有 sa_family :P再从另一种观点, 把common当作header,后续当作 payload,就是一个封装的概念.
楼主: gn00618777 (非常念旧)   2016-07-09 09:57:00
谢谢解说,我在Androiddev 也有发表一下心得~一起讨论

Links booklink

Contact Us: admin [ a t ] ucptt.com