ping命令里定义的struct proto:
struct proto {
void (*fproc)(char *, ssize_t, struct timeval *);
void (*fsend)(void);
struct sockaddr *sasend; /* sockaddr{} for send, from getaddrinfo */
struct sockaddr *sarecv; /* sockaddr{} for receiving */
socklen_t salen; /* length of sockaddr{}s */
int icmpproto; /* IPPROTO_xxx value for ICMP */
} *pr;
有:
struct proto proto_v4 = { proc_v4, send_v4, NULL, NULL, 0, IPPROTO_ICMP };
其中的proc_v4,send_v4都是函数,pro定义如下:
void proc_v4(char *ptr, ssize_t len, struct timeval *tvrecv);
void send_v4(void);
具体函数内部定义就不贴了,没什么关系。我的问题是:
在proto_v4 = { proc_v4, send_v4, NULL, NULL, 0, IPPROTO_ICMP }中,proc_v4函数怎么传参?整个ping源码里面没有其他地方调用到proc_v4了,只有在proto_v4里调用了,他传进去的是函数的是函数地址还是函数返回值的地址?而且struct proto_v4怎么可以直接用
‘=‘呢?
求高手帮忙解答,谢谢!
那还有proc_v4这个函数需要参数,怎么把参数传进去呢?
蓝山帝景
噜噜哒
犯罪嫌疑人X
随时随地看视频慕课网APP