为什么使用getsockopt()函数总提示参数不符合规范?
发表于 : 2013-03-04 21:52
大家好!
最近在使用getsockopt()函数,按照书上的例子写下来,可是编译总是提出警告,警告如下:
警告: 传递‘getsockopt’的第 5 个参数时在不兼容的指针类型间转换 [默认启用]
附注: 需要类型‘socklen_t * __restrict__’,但实参的类型为‘socklen_t **’
我的代码如下:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s;
int val;
socklen_t *len;
//len = sizeof(int);
if((s = socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("connect");
exit(1);
}
else
{
printf("A socket was created.\n");
printf("socket number: %d\n",s);
}
getsockopt(s,SOL_SOCKET,SO_TYPE,&val,*len); //第五个参数有问题,未解决
我也查过getsockopt的用法,但还是不解第五个参数应该如何设置。这里还有一个问题,就是怎么找到#include <sys/types.h>中这个types.h 头文件,我在/usr/include /usr/lib 甚至在文件系统根目录/下用find指令查找也没有找到这个头文件,包括没有找到那个sys文件夹……
从学习linux下C编程以来感觉步履维艰,还望各位朋友指点一番,谢谢!
最近在使用getsockopt()函数,按照书上的例子写下来,可是编译总是提出警告,警告如下:
警告: 传递‘getsockopt’的第 5 个参数时在不兼容的指针类型间转换 [默认启用]
附注: 需要类型‘socklen_t * __restrict__’,但实参的类型为‘socklen_t **’
我的代码如下:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int s;
int val;
socklen_t *len;
//len = sizeof(int);
if((s = socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("connect");
exit(1);
}
else
{
printf("A socket was created.\n");
printf("socket number: %d\n",s);
}
getsockopt(s,SOL_SOCKET,SO_TYPE,&val,*len); //第五个参数有问题,未解决
我也查过getsockopt的用法,但还是不解第五个参数应该如何设置。这里还有一个问题,就是怎么找到#include <sys/types.h>中这个types.h 头文件,我在/usr/include /usr/lib 甚至在文件系统根目录/下用find指令查找也没有找到这个头文件,包括没有找到那个sys文件夹……
从学习linux下C编程以来感觉步履维艰,还望各位朋友指点一番,谢谢!