在 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来讲有什么用意吗?
谢谢。
作者: yvb 2016-07-08 12:25:00
在Android HAL前,其实Linux HAL等实作,甚至其它OS内部实作,早就这样玩了... 甚至 socket programming: bind(),connect()其中的 sockaddr 就是这样, 只不过共用的只有 sa_family :P再从另一种观点, 把common当作header,后续当作 payload,就是一个封装的概念.