'sockaddr_in 6_t'即使包含头文件后也未声明错误

时间:2011-12-18 23:49:30

标签: 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)

我是否需要访问图书馆的特殊库安装或链接?

1 个答案:

答案 0 :(得分:3)

看起来您从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),但无论如何