socklen_t clilen; // declaration
n = sendto(sockfd1, buffer, sizeof(buffer), 0, (struct sockaddr *)&cli_addr, &clilen);
if(n < 0)
{
printf("\nERROR writing to socket\n");
exit(0);
}
在编译我的代码时,它会给我一个警告,如.....
warning: passing argument 6 of ‘sendto’ makes integer from pointer without a cast [enabled by default]
n = sendto(sockfd1, buffer, sizeof(buffer), 0, (struct sockaddr *)&cli_addr, &clilen);
怎么办?
答案 0 :(得分:4)
试试
socklen_t
我认为最后一个参数类型是 connectionResult.startResolutionForResult(this, 1);
并且它不是指针,因此您不需要传递变量的地址;只是传递变量本身它会起作用,不会像现在这样给出任何警告。
答案 1 :(得分:1)
原型是
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
所以最后一个参数不是指针而是类型为socklen_t
的整数
所以只需传递一个(socklen_t) sizeof (struct sockaddr)
就可以了。它说它是第6个参数,但你正在第5个参数。