c - ‘sockaddr_in 6’ 未声明的错误,即使包含了头文件

标签 c sockets ipv6

我有以下一段简单的代码,它是一个大项目中 ipv6 处理模块的一部分。

#include <ctype.h>
#include <sys/select.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <net/if.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/stat.h>

int main(){
  sockaddr_in6_t* pSadrIn6 = (sockaddr_in6_t*) malloc(sizeof sockaddr_in6_t);
  return 0;
}

它给了我以下不是错误:

error: ‘sockaddr_in6_t’ undeclared (first use in this function)

是否需要任何特殊的库安装或链接才能访问该库?

最佳答案

您似乎从 Linux IPv6 HOWTO 复制了这段代码但没有复制额外的 typedef:

/*
** Type definitions (for convenience).
*/
typedef enum { false = 0, true } boolean;
typedef struct sockaddr_in       sockaddr_in_t;
typedef struct sockaddr_in6      sockaddr_in6_t;

就我个人而言,我只会按原样使用类型(而不是额外的 typedefs 以避免键入 struct),但无论如何

关于c - ‘sockaddr_in 6’ 未声明的错误,即使包含了头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555794/

相关文章:

c - 如何在C中将文件内容读取为字符串?

c - 套接字 C - Windows

java - 这个程序有什么bug?

ios - GCDAsyncUDPSocket : cannot get UDP multicast over IPv6 to work

在 C 中从多个 char 数组字段创建 int 值

c - C语言读取文件出错

C 获取小数值作为 int

c - 无法通过 TCP 连接发送整个文件! (UNIX C)

c# - NancyFX 和 IPv6 问题

c - IPv6 服务器中的绑定(bind)错误