【发布时间】:2016-05-31 09:33:09
【问题描述】:
我正在用 C 编写一个简单的网络程序。当我用 --std=c11 打开 -Wall 时,我收到一条关于声明结构方式的错误消息。
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int main() {
struct addrinfo res;
return 0;
}
addrinfo 类型在 sys/types.h 文件中定义。使用指针时不会出错。
如何解决此错误消息?
simple.c:9:25: error: storage size of ‘res’ isn’t known
struct addrinfo res;
^
【问题讨论】:
-
man 2 bind: 为 addr 参数传递的实际结构将取决于地址族。 sockaddr 结构定义为: struct sockaddr { sa_family_t sa_family;字符 sa_data[14];此结构的唯一目的是转换在 addr 中传递的结构指针以避免编译器警告。 您不会创建struct sockaddr类型的对象以供正常使用,而是创建适当的对象子类型,struct sockaddr_in用于 ipv4,例如。
标签: c networking