OS X未申报sockaddr_in6的

问题描述:

我试图编译在OS X上使用IPv6的套接字的应用程序,但它失败,出现错误消息:OS X未申报sockaddr_in6的

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

我看过一个类似的问题上SO,但包括SYS /类型和netinet/in没有解决问题。我只是编译“gcc -o foo foo.c”,我需要像“-lnetinet”这样的东西吗? (我试过,但-lnetinet并没有帮助)

简单的例子:

#include <sys/types.h> 
#include <netinet/in.h> 

int main(int argc, char **argv) { 

    sockaddr_in6 addr; 
    return 0; 
} 

...我已经寻找相应的文件和我有“/usr/include/netinet/in.h中“其中包含缺少”sockaddr_in6“-struct的”netinet6/in6.h“。我错过了什么?

感谢您的帮助!

问题解决了,我错过了 “结构” 标签中的 “sockaddr_in6的” 前:

struct sockaddr_in6 addr; 
+0

什么OSX的版本?什么版本的编译器? – *foe 2013-02-18 16:45:24

+0

OS X是10.8.2和GCC 4.2.1。 – andreas 2013-02-18 16:48:14

+1

GCC从哪里来?你有没有试过更现代的编译器(即Xcode 4.6附带的clang)? – *foe 2013-02-18 16:50:26

你在C工作,所以你需要使用struct

struct sockaddr_in6 addr;