我有以下一段简单的代码,它是一个大项目中 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/