bug: error: storage size of 'temp' isn't known
char* getip(char *ip_buf)
{
struct ifreq temp;
struct sockaddr_in *myaddr;
int fd = 0;
int ret = -1;
strcpy(temp.ifr_name, "eth0");
if((fd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
return-1;
}
ret = ioctl(fd, SIOCGIFADDR, &temp);
close(fd);
if(ret < 0)
return NULL;
myaddr = (struct sockaddr_in *)&(temp.ifr_addr);
strcpy(ip_buf, inet_ntoa(myaddr->sin_addr));
return ip_buf;
}
有两种原因:
原因之一:编译参数,LOCAL_CFLAGS += -std=gnu99 我的不是这个原因。
原因之二:头文件没包含好,查找ifreq结构体的头文件,
#include <net/if.h>
加进去,解决。
类似的问题可如此参考修改下。