2012-06-28 12 views
7

Es ist Teil einer Reihe von Funktionen, die IP-Adressen aus dem Telefon IP & abrufen.Implizite Erklärung der Funktion 'Ether_ntoa' ist ungültig in C99

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

EDIT: Keine äquivalente Funktion benötigt, es gab nur ein paar fehlende Header.

EDIT: Added to LLADDR gegossen (sdl)

+0

Es scheint, obwohl es eine Mac OS X-Manpage ist, es in der iOS-Entwicklungsbibliothek enthalten ist. http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/ether_ntoa.3.html – trojanfoe

+0

Werfen Sie einen Blick auf den Ziel C-Code unter diesem Link, die Ihnen von "amcgregor" helfen könnte . https://gist.github.com/1265265 –

Antwort

15

Als ich es las, wird die Fehlermeldung fehlt nicht nur behauptet, dass die Funktion, dass Sie seine Erklärung nicht enthalten. (Ich nicht wissen, dass es existiert, nur, dass die Nachricht eine andere Beschwerde hat.)

Falls es hilft, man ether_ntoa sagt mir:

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

Sieht so aus, als ob ich #include vermisst habe. Aber jetzt bekomme ich den neuen Fehler: "" Inkompatible Zeigertypen übergeben 'caddr_t' (aka 'char *') an Parameter vom Typ 'const struct ether_addr *' "'. Ich denke, das ist ein Casting-bedingter Fehler? – Orchid

+0

Ich bin nicht mit 'LLADDR' vertraut, aber da der' ether_ntoa' Parameter heißt 'const struct ether_addr *', würde ich vermuten, dass Sie mit der Ursache des Problems recht haben. –

+3

Ok, der Fehler im obigen Kommentar war ein Typfehler mit dem Parameter, der an 'ether_ntoa()' übergeben wurde, weil 'LLADDR (sdl)' '' 'char *' zurückgibt, aber 'ether_ntoa()' etwas anderes braucht. Behoben mit dem Cast: 'ether_ntoa ((const struct ether_addr *) LLADDR (sdl)))' und alles scheint noch zu funktionieren. – Orchid

0

I enthalten folgende Header-Datei und den Quellcode kompiliert erfolgreich:

#import <arpa/inet.h> 
Verwandte Themen