gpt4 book ai didi

c - addrinfo 的存储大小未知

转载 作者:太空狗 更新时间:2023-10-29 17:10:28 24 4
gpt4 key购买 nike

我正在用 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;
^

最佳答案

几点:

  1. 类型addrinfo实际上是在netdb.h中定义的。
  2. 您可以使用 -E 标志给 gcc 查看预处理器输出并发现 addrinfo 结构实际上没有定义在你的代码中。现在您应该怀疑可能缺少某些定义。
  3. 可以看出here , 为了公开您需要使用 _POSIX_C_SOURCE feature test macro 的定义.
  4. 因此,这应该可以解决提到的错误消息:

    #define _POSIX_C_SOURCE 200112L

    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netdb.h>

    int main() {
    struct addrinfo res;

    return 0;
    }

关于c - addrinfo 的存储大小未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com