我正在用C编写一个简单的网络程序。当我使用-Wall
打开--std=c11
时,我收到一条关于声明结构的方式的错误消息。
#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;
^
答案 0 :(得分:7)
有几点:
addrinfo
实际上是在netdb.h
。-E
标记gcc
来查看预处理器输出,并发现代码中实际上未定义addrinfo
结构。现在你应该怀疑可能缺少一些定义。_POSIX_C_SOURCE
feature test macro。因此,这应该解决上面提到的错误消息:
#define _POSIX_C_SOURCE 200112L
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int main() {
struct addrinfo res;
return 0;
}