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>
加进去,解决。
类似的问题可如此参考修改下。

本文解决了一个C编程中常见的编译错误:storagesize'temp'isn't known。错误出现在一个获取IP地址的函数中,原因是未正确包含头文件。通过加入<net/if.h>,成功解决了问题。
1186

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



