[英]UDP recvfrom warning with gcc compiler
编译client - server UDP socket
模拟时,我收到以下warning
:
警告:将'int *'传递给类型'socklen_t *'(又名'unsigned int *')的参数会在指针之间转换为具有不同符号[-Wpointer-sign]的整数类型
这是有关的代码:
#define BUFLEN 2048
struct sockaddr_in myaddr, remaddr;
int fd, recvlen, slen=sizeof(remaddr);
...
char response[BUFLEN];
recvlen = recvfrom(fd, response, BUFLEN - 1, 0, (struct sockaddr *)&remaddr, &slen);
我一直在参考罗格斯大学的教程。 对于为什么会出现此警告,我有一个很明确的想法(它希望我使用socklen_t *
),但是我想问一下SO社区。
它要我使用
socklen_t *
正确。
为什么会出现此警告?
因为您没有使用socklen_t
。
我该如何摆脱呢?
声明slen
为socklen_t
。
为什么会出现此警告?
发生警告是因为socklen_t
是无符号类型,而int
是有符号类型(如诊断所述)。 因此,原则上, recvfrom()
可以与调用方对指向的值进行不同的解释。 实际上,只要使用正确的地址struct
长度值,GCC编译的代码就不会发生这种差异,但是GCC不能在编译时进行检查。
我该如何摆脱呢?
传递正确类型的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.