2012-06-28 55 views
7

它是從手機檢索IP地址的一系列函數的一部分。函數'ether_ntoa'的隱式聲明在C99中是無效的

strcpy(temp, (char *)ether_ntoa((const struct ether_addr *)LLADDR(sdl))); 

編輯:沒有相應的功能需要,只有一些缺少標題。

編輯:添加轉換爲LLADDR(SDL)

+0

它似乎是,儘管它是一個Mac OS X的手冊頁,它包含在iOS開發庫中。 http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/ether_ntoa.3.html – trojanfoe

+0

看看這個鏈接的Objective C代碼,它可以幫助你從「amcgregor」 。 https://gist.github.com/1265265 –

回答

15

當我讀到它,該錯誤信息不會聲稱功能缺失,只是你不包括它的聲明。 (我不知道它的存在,僅該消息有不同的意見。)

萬一有幫助,man ether_ntoa告訴我:

#include <sys/types.h> 
#include <sys/socket.h> 
#include <net/ethernet.h> 
+0

看起來我缺少#include 。但是現在我得到新的錯誤:''不兼容的指針類型將'caddr_t'(aka'char *')傳遞給'const struct ether_addr *'「''類型的參數。我想這是一個與鑄件相關的錯誤? – Orchid

+0

我不熟悉'LLADDR',但是,由於'ether_ntoa'參數被稱爲'const struct ether_addr *',所以我猜想你是對的。 –

+3

好吧,上面註釋中的錯誤是傳遞給'ether_ntoa()'的參數的一個類型錯誤,因爲'LLADDR(sdl))'返回一個'char *',但是'ether_ntoa()'帶有其他的東西。修正了這個強制轉換:'ether_ntoa((const struct ether_addr *)LLADDR(sdl)))'並且所有的東西似乎仍然在工作。 – Orchid

0

我包括下面的頭文件和源代碼編譯成功:

#import <arpa/inet.h> 
相關問題