Я попал в ситуацию, когда аргумент передается в libev.
Обычно, libev получает пакеты в такой функции, как * receive_callback *, это нормально, но на практике нам нужно отправить относительный * 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? Должны ли мы нести бремя и уродство глобальных переменных здесь?