¡Buenas a todos!
Tengo los siguientes warnings en gcc y no se porque:
Warning 1:
CitarsendPacket3.c: In function 'CreateEthernetHeader':
sendPacket3.c:120: warning: implicit declaration of function 'ether_aton'
void * sourceMAC;
sourceMAC =(void *) ether_aton(src_mac); //linea 120
Warning 2-3
Citar
sendPacket3.c: In function 'sendPacket':
sendPacket3.c:309: warning: pointer targets in assignment differ in signedness
sendPacket3.c:383: warning: implicit declaration of function 'close'
unsigned char *data;
int pkt_len;
//data = CreateData(DATA_SIZE);
data="<html>HOLA</html>"; //linea 309
int DATA_SIZE=0;
DATA_SIZE=17;//strlen((const char *)data);
/**************************************************/
int raw;
// por aqui sigen varias lineas de codigo....
close(raw); //linea 383
Warning 4
Citarmain.c: In function 'main':
main.c:16: warning: implicit declaration of function 'atoi'
int srcPort,destPort, seqnum, acknum, urg,ack,psh,rst,syn,fin;
srcPort=atoi(argv[3]); //esta es la linea 16...
destPort=atoi(argv[5]);
seqnum=atoi(argv[6]);
acknum=atoi(argv[7]);
urg=atoi(argv[8]);
ack=atoi(argv[9]);
psh=atoi(argv[10]);
rst=atoi(argv[11]);
syn=atoi(argv[12]);
fin=atoi(argv[13]);
¿Alguna idea de como solucionar estos warnings?
CitarsendPacket3.c: In function 'CreateEthernetHeader':
sendPacket3.c:120: warning: implicit declaration of function 'ether_aton'
la función
ether_aton está declarada antes de esa línea ?, hay algún prototipo ?
CitarsendPacket3.c: In function 'sendPacket':
sendPacket3.c:309: warning: pointer targets in assignment differ in signedness
En lugar de hacer esto:
unsigned char *data;
data="<html>HOLA</html>";
Hacé esto:
unsigned char data[] = "<html>HOLA</html>";
CitarsendPacket3.c:383: warning: implicit declaration of function 'close'
Lo mismo que el primero. Fijate donde está declarada la función
close.
Citarmain.c: In function 'main':
main.c:16: warning: implicit declaration of function 'atoi'
Agregaste la librería
stdlib.h ?
¡Buenas CrisQC!
Muchas gracias por tu ayuda. Tenias razon, mi problema estaban en las librerias. En el main.c necesitaba añadir la libreria stdlib.h. Lo del char *, le he declarado como me dijiste (array char) y me ha funcionado tambien, y lo del ether_aton() y el close() solo tuve que añadir la libreria que contenian esas funciones y me ha funcionado tambien! jeje
Lo que no entiendo es como las funciones ether_aton() y close() me funcionaban si tener incluidas las librerias que las contiene....deberia haberme dado errores de compilacion del tipo: "no esta declarada la funcion close()..." Pero imagino que esto se debe a que otras librerias que tengo incluidas acceden de manera indirecta a estas funciones y por eso me compilaba pero con warnings.
Muchas gracias.
Por nada, me alegro que lo hayas solucionado!.
Puede ser. Si existe el include en algún lugar y se declara la función no hay problema. No sé como estás trabajando, pero si estás usando un entorno de desarrollo ( code::blocks, VC .. ), tal vez hizo el trabajo por vos, evitando los errores y dándote warnings.