天线|RF射频
直播中

桂莅鑫

7年用户 282经验值
私信 关注
[问答]

请问LWIP中的回调函数如何传递参数?

在函数IAP_httpd_init();中调用了函数:tcp_accept(PCB, http_accept);
在函数http_accept();中调用了函数:tcp_recv(pcb, http_recv);
最后一个回调函数的部分代码如下:
static err_t http_recv(void *arg, struct tcp_pcb *pcb,  struct pbuf *p, err_t err)
{
  int32_t i,len=0;
  uint32_t DataOffset, FilenameOffset;
  char *data, *ptr, filename[13], login[LOGIN_SIZE], logina[LOGINA_SIZE];
  struct fs_file file = {0, 0};
  struct http_state *hs;
  
  hs = arg;
。。。。。。。
}
那么请问:arg这个参数是哪里传来的呢?
在网上搜索回调函数的资料,似乎都没有明确讲解过回调函数参数传递的问题。
唯有下面网址的文档提到了这个问题,但是只给出了编译结果,没有从C语言的原理方面作出解释。
另外一个问题是“注册回调函数”中的“注册”怎么理解呢?从实验现象来看,似乎只要以太网收到了有效数据就会触发回调函数。但是以我有限的C语言知识无法理解这段在程序初始化的时候写下的代码是怎么在程序初始化完成之后被“触发的”。

回帖(10)

陈玉英

2020-3-27 07:24:49
http://www.docin.com/p-704390500.html
网址忘记发了,图片本不想传,可能由于网速卡没删掉。
举报

王茜

2020-3-27 07:41:21
还是好好学习下C语言吧  ,回调函数是经常会用到的。
举报

郝埃连

2020-3-27 07:47:04
不明白你的回复用意何在,难道是这个问题过于简单不值得回答?连一个方向也不指引给我。
举报

王婷婷

2020-3-27 08:03:06
楼主这个问题搞清楚了吗。。。我这里也很困惑
举报

更多回帖

发帖
×
20
完善资料,
赚取积分