以下代码段中的第三行:
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 * 限制'但参数的类型为'int'
这是什么原因?
答案 0 :(得分:1)
你是否适当地包括了标题?
inet_ntoa
的人建议关注
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
编译器可能无法找到inet_ntoa
的原型并假设它返回int
,然后在memcpy
中发出警告。