在函数IAP_httpd_init();中调用了函数:tcp_accept(
PCB, http_accept);
在函数http_accept();中调用了函数:tcp_recv(pcb, http_recv);
最后一个回调函数的部分代码如下:
sta
tic 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语言知识无法理解这段在程序初始化的时候写下的代码是怎么在程序初始化完成之后被“触发的”。