例:ssize_t recvfrom(int sockfd, void *buff, size nbytes, int flags, struct sockaddr *from, socklen_t *addrlen);
最后一个参数不可为int*,否则报错
将参数类型改为socklen_t *后恢复正常
该数据类型可作为sizeof的返回值,不需强制转换(同int?)
gcc编译时无此问题,利用g++编译时出现
windows下最后一个参数类型为int
可以typedef int socklen_t;进行不同平台的对应
关于linux下C++中利用socket时的数据类型转换错误
最新推荐文章于 2025-02-21 15:39:59 发布
本文详细解析了recvfrom函数中最后一个参数的正确使用方法,并强调了其数据类型必须为socklen_t*的原因。同时,文章还提到了不同编译器(如gcc与g++)在处理该参数类型时的表现差异,以及如何通过类型定义实现跨平台兼容。
3901

被折叠的 条评论
为什么被折叠?



