我有一段简单的代码,它是大项目中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)
我是否需要访问图书馆的特殊库安装或链接?
答案 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
),但无论如何