2012-06-28 10 views
7

Es parte de una serie de funciones que recuperan las direcciones IP de IP & del teléfono.La declaración implícita de la función 'ether_ntoa' no es válida en C99

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

EDITAR: No se necesita una función equivalente, faltan algunos encabezados.

EDITAR: Añadido echó a LLADDR (SDL)

+0

Parece ser, a pesar de decir que es una página de manual de Mac OS X, que se incluye en la biblioteca de desarrollo de iOS. http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/ether_ntoa.3.html – trojanfoe

+0

Eche un vistazo al código de Objective C en este enlace que podría ayudarlo con "amcgregor" . https://gist.github.com/1265265 –

Respuesta

15

Mientras lo leía, el mensaje de error no afirma que la función no se encuentra, solo que no se incluye su declaración. (No me saber que existe, sólo que el mensaje tiene una queja diferente.)

En caso de que ayuda, man ether_ntoa me dice:

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

Parece que me falta #include . Sin embargo ahora recibo el nuevo error: '" Tipos de puntero incompatibles pasando 'caddr_t' (alias 'char *') al parámetro de tipo 'const struct ether_addr *' "'. ¿Supongo que este es un error relacionado con el lanzamiento? – Orchid

+0

No estoy familiarizado con 'LLADDR' pero, como se dice que el parámetro' ether_ntoa' es 'const struct ether_addr *', supongo que tienes razón sobre la causa del problema. –

+3

Bien, el error en el comentario anterior fue un error de tipo con el parámetro pasado a 'ether_ntoa()', porque 'LLADDR (sdl))' devuelve un 'char *' pero 'ether_ntoa()' toma algo más. Corregido con el molde: 'ether_ntoa ((const struct ether_addr *) LLADDR (sdl)))' y parece que todo sigue funcionando. – Orchid

0

I incluyó siguiente archivo de cabecera y el código fuente compilado correctamente:

#import <arpa/inet.h> 
Cuestiones relacionadas