【问题标题】:OS X sockaddr_in6 undeclared [closed]OS X sockaddr_in6 未声明 [​​关闭]
【发布时间】: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 进行编译。谢谢!

标签: c macos ipv6


【解决方案1】:

你正在使用 C,所以你需要使用 struct:

struct sockaddr_in6 addr;

【讨论】:

    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2013-06-04
    相关资源
    最近更新 更多