我可以用吗boost::bind(mycallback, this, _1, _2)
跨C代码?
Update
简短的答案是no,boost bind并不返回函数指针,可以在C代码中调用,而是返回一个functor(带有重载的 C++ 对象()
运算符)请参阅下面的答案。
完成您想做的事情的最佳方法是创建一个 C 回调,然后调用 boost::function,该函数使用 new 存储在某种用户内存中。
Example:
void callFunction(void* data)
{
boost::function<void(void)> *func = (boost::function<void(void)>* ) (data);
(*func)();
delete(func);
}
然后,您只需传递此回调并将用户数据(但在 libev 中指定)设置为用 new 分配的函数的副本。
这是使用 libev 指定用户数据的方式:http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#ASSOCIATING_CUSTOM_DATA_WITH_A_WATCH http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#ASSOCIATING_CUSTOM_DATA_WITH_A_WATCH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)