【发布时间】:2013-02-18 16:42:35
【问题描述】:
我正在尝试在 OS X 上编译一个使用 IPv6 套接字的应用程序,但它失败并显示错误消息:
error: ‘sockaddr_in6’ undeclared (first use in this function)
我在SO 上阅读了类似的问题,但包括 sys/types 和 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”,其中包括“netinet6/in6.h”,其中缺少“sockaddr_in6”-struct。我错过了什么?
感谢您的帮助!
问题解决了,我在“sockaddr_in6”前面少了一个“struct”标签:
struct sockaddr_in6 addr;
【问题讨论】:
-
什么版本的 OSX?什么版本的编译器?
-
OS X 是 10.8.2 和 GCC 4.2.1。
-
GCC 是从哪里来的?您是否尝试过更现代的编译器(即 Xcode 4.6 附带的 clang)?
-
我尝试用 cc 编译,它说“错误:必须使用 'struct' 标签来引用类型 'sockaddr_in6'”。添加它后,我也可以使用 cc 和 gcc 进行编译。谢谢!