因为需要,我变了一个获得主机IP的程序,源码如下:
#include<sys/utsname.h>
#include<unistd.h>
#include<stdio.h>
int main(int argc,char** argv)
{
struct hostent *he;
struct utsname myname;
struct in_addr *paddrlist;
char **addes;
if(uname(&myname)<0)
{
printf("get name fail!\n");
return 0;
}
printf("%s\n",myname.nodename);
if((he=gethostbyname(myname.nodename))==NULL)-------------(1)
{
printf("get hostent fail\n");
return 0;
}
addes=he->h_addr_list;---------------------(2)
}
可是在用gcc编译时,总是在(1)处出现警告warning:assignment makes point from integer without a cast,但在gethostbyname前加上(struct hostent*)强制类型转换就不会出此问题。gethostbyname返回的不就是一个struct hostent得指针吗?
要命的是在(2)处总是出现dereferencing point to incomplete type的致命错,
不管是在我自己的单机上还是另外一台服务器上都是这样,望高手指点。
没包含头文件:
#include <netdb.h>