Warnings en gcc -Wall

Iniciado por soyloqbuskas, 4 Abril 2012, 00:34 AM

0 Miembros y 1 Visitante están viendo este tema.

soyloqbuskas

¡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?
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

Beakman

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:
Código (cpp) [Seleccionar]
unsigned char *data;
data="<html>HOLA</html>";


Hacé esto:
Código (cpp) [Seleccionar]
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 ?

soyloqbuskas

¡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.
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

Beakman

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.