2013-02-18 84 views
0

我試圖編譯在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的版本?什麼版本的編譯器? – trojanfoe 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)? – trojanfoe 2013-02-18 16:50:26

回答

1

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

struct sockaddr_in6 addr;