2012-06-28 14 views
7

Jest to część serii funkcji, które pobierają adresy MAC IP z telefonu.Niejawna deklaracja funkcji "ether_ntoa" jest nieprawidłowa w C99

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

EDYCJA: Nie potrzeba żadnej równoważnej funkcji, było tylko kilka brakujących nagłówków.

EDIT: Dodano oddane do LLADDR (SDL)

+0

Wygląda na to, że pomimo tego, że jest to strona podręcznika systemu Mac OS X, jest on dołączony do Biblioteki programistycznej systemu iOS. http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/ether_ntoa.3.html – trojanfoe

+0

Spójrz na kod Celu C pod tym linkiem, który może Ci pomóc w "amcgregor" . https://gist.github.com/1265265 –

Odpowiedz

15

Jak czytam go, komunikat o błędzie nie jest twierdząc, że funkcja brakuje, tylko że nie obejmują swoją deklarację. (I nie wiedzieć, że istnieje, tylko, że wiadomość ma inną skargę.)

W przypadku pomaga, man ether_ntoa mówi mi:

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

Wygląda na to, że brakowało #include . Jednak teraz otrzymuję nowy błąd: "Niekompatybilne typy wskaźników przekazujące" caddr_t "(alias" char * ") do parametru typu" const struct ether_addr * "" ". Zgaduję, że to błąd związany z castingiem? – Orchid

+0

Nie jestem zaznajomiony z 'LLADDR', ale ponieważ parametr' ether_ntoa' jest określany jako "const struct ether_addr *", zgaduję, że masz rację co do przyczyny problemu. –

+3

OK, błąd w powyższym komentarzu był błędem typu z parametrem przekazanym do 'ether_ntoa()', ponieważ 'LLADDR (sdl))' zwraca 'char *', ale 'ether_ntoa()' bierze coś innego. Naprawiono obsadę: 'ether_ntoa ((const struct ether_addr *) LLADDR (sdl)))' i wszystko wydaje się nadal działać. – Orchid

0

włączyłem następujący plik nagłówka i kodu źródłowego skompilowany z powodzeniem:

#import <arpa/inet.h> 
Powiązane problemy