我陷入了libev中传递论点的情况。

通常,libev可以使用 * receive_callback * 之类的函数来接收软件包,这是可以的,但实际上,我们需要根据接收到的软件包 dispatch 一个相对的 * write_callback * 来处理特定的作业。例如:

S_RECV_MSG* pstRecvMsg = (S_RECV_MSG*) recv_buff;
switch(pstRecvMsg->wMsgType) {
    case 1:
        ev_io_init(w, write_callback1, w->fd, EV_WRITE);
        break;
    case 2:
        ev_io_init(w, write_callback2, w->fd, EV_WRITE);
        break;
    case 3:
        // .......
}

我的问题是,如果write_callbackX也必须读取recv_buff中的特定内容,我们如何将recv_buff参数传递给callbackX?我们是否必须在这里承担全局变量的负担和丑陋?

最佳答案

作者本人回答了,但发表了评论。由于这显示为未答复,我
将他的答案发布在“答案”部分并关闭循环。不知道是否有更好的方法...随时解决此问题。

问题作者说:

关于c - Libev,如何将参数传递给相关的回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9937016/

10-09 15:52