-2

对于以下代码段中的第三行:

char cli_ip[20];
struct sockaddr cliaddr;
.......
memcpy(cli_ip, inet_ntoa(((struct sockaddr_in *)cliaddr)->sin_addr), 20);

我收到错误:

udp_receiver.c:96:41: 错误: 无法转换为指针类型 udp_receiver.c:96:41: 警告: 传递“memcpy”的参数 2 使指针从整数不进行强制转换 [默认启用] /usr/include/ string.h:44:14:注意:预期为“const void * restrict ”,但参数的类型为“int”</p>

这是什么原因?

4

1 回答 1

1

您是否适当地包含了标题?

inet_ntoa建议以下的人包括

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

可能是编译器没有找到原型inet_ntoa并假设它返回int然后在memcpy.

于 2013-04-09T08:48:27.107 回答