回调函数问题

[复制链接]
 楼主| sinadz 发表于 2012-5-30 19:01 | 显示全部楼层 |阅读模式
int init_dev()
{
phy_obj = (struct physical_interface*) malloc(sizeof(struct physical_interface));
register_phy_obj(phy_obj);
phy_obj->g_init_phy_layer(); ??????
}

//phy_obj为
struct physical_interface
{
init_phy_layer g_init_phy_layer; //typedef void (*init_phy_layer)();
}
struct physical_interface * phy_obj;

//register_phy_obj为
void register_phy_obj(struct physical_interface * phy_obj)
{
phy_obj->g_init_phy_layer = init_phy_dev;
}

请问“”??????”“那一句什么意思????
gxgclg 发表于 2012-5-30 19:13 | 显示全部楼层
使用了一个函数指针init_phy_dev;逻辑就是调用init_phy_dev函数。
dfsa 发表于 2012-5-30 19:23 | 显示全部楼层
register_phy_obj(phy_obj);   
这句意思是注册,
其实就是给phy_obj里面的成员g_init_phy_layer赋值init_phy_dev 。就是地址给他

phy_obj->g_init_phy_layer(); ??????

那上面这句话就是调用了。

回调函数的使用方法就是这样。
地址加(参数)
你参数为空。所以就长这样了
phy_obj->g_init_phy_layer()
无冕之王 发表于 2012-5-30 19:26 | 显示全部楼层
就是指针调用它的成员函数阿。。。怎么了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部