Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: soyloqbuskas en 4 Abril 2012, 00:34 am



Título: Warnings en gcc -Wall
Publicado por: soyloqbuskas en 4 Abril 2012, 00:34 am
¡Buenas a todos!

Tengo los siguientes warnings en gcc y no se porque:

Warning 1:
Citar
sendPacket3.c: In function ‘CreateEthernetHeader’:
sendPacket3.c:120: warning: implicit declaration of function ‘ether_aton’

Código
  1. void * sourceMAC;
  2.        sourceMAC =(void *) ether_aton(src_mac);  //linea 120
  3.  
  4.  

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’

Código
  1.        unsigned char *data;
  2.        int pkt_len;
  3.  
  4.        //data = CreateData(DATA_SIZE);
  5.        data="<html>HOLA</html>";  //linea 309
  6.        int DATA_SIZE=0;
  7.        DATA_SIZE=17;//strlen((const char *)data);
  8.  
  9.        /**************************************************/
  10.  
  11.        int raw;
  12.                 // por aqui sigen varias lineas de codigo....
  13.        close(raw);  //linea 383
  14.  

Warning 4
Citar
main.c: In function ‘main’:
main.c:16: warning: implicit declaration of function ‘atoi’

Código
  1.    int srcPort,destPort, seqnum, acknum, urg,ack,psh,rst,syn,fin;
  2.                srcPort=atoi(argv[3]); //esta es la linea 16...
  3.                destPort=atoi(argv[5]);
  4.                seqnum=atoi(argv[6]);
  5.                acknum=atoi(argv[7]);
  6.                urg=atoi(argv[8]);
  7.                ack=atoi(argv[9]);
  8.                psh=atoi(argv[10]);
  9.                rst=atoi(argv[11]);
  10.                syn=atoi(argv[12]);
  11.                fin=atoi(argv[13]);
  12.  
  13.  

¿Alguna idea de como solucionar estos warnings?


Título: Re: Warnings en gcc -Wall
Publicado por: Beakman en 4 Abril 2012, 02:00 am
Citar
sendPacket3.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 ?

Citar
sendPacket3.c: In function ‘sendPacket’:
sendPacket3.c:309: warning: pointer targets in assignment differ in signedness

En lugar de hacer esto:
Código
  1. unsigned char *data;
  2. data="<html>HOLA</html>";

Hacé esto:
Código
  1. unsigned char data[] = "<html>HOLA</html>";

Citar
sendPacket3.c:383: warning: implicit declaration of function ‘close’
Lo mismo que el primero. Fijate donde está declarada la función close.

Citar
main.c: In function ‘main’:
main.c:16: warning: implicit declaration of function ‘atoi’
Agregaste la librería stdlib.h ?


Título: Re: Warnings en gcc -Wall
Publicado por: soyloqbuskas en 4 Abril 2012, 02:24 am
¡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.


Título: Re: Warnings en gcc -Wall
Publicado por: Beakman en 4 Abril 2012, 03:51 am
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.