在 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,就是一個封裝的概念.