PDA

Visualizza la versione completa : [C] field has incomplete type


Devour
21-12-2012, 11:30
Salve,
ho questo pezzo di codice in un file header structures.h per un file c:


struct server{

struct server *next; /*puntatore al server successivo*/
int port; /*porta del server*/
struct in_addr addr; /*indirizzo del server*/

};


nel momento in cui vado a compilare, ottengo questo errore:



structures.h:18:17: error: field ‘addr’ has incomplete type

non riesco a capire qual'è il problema..qualcuno può aiutarmi?

pistilloi
21-12-2012, 12:17
Penso sia necessario usare:

struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};

in_addr è semplicemente un'intero:


struct in_addr {
unsigned long s_addr; // load with inet_pton()
};

Però dovresti specificare ché istruzione ti d'ha l'errore, nella riga 18 del file structures.h. O meglio ancora mostrare il codice!

c0der
21-12-2012, 12:44
My2cents: secondo me manca semplicemente all'inizio del file structures.h:

#include <netinet/in.h>

Ciao.

Devour
21-12-2012, 12:46
#ifndef structures_h
#define structures_h


struct server{
struct server *next; /*puntatore al server successivo*/
int port; /*porta del server*/
struct in_addr addr; /*indirizzo del server*/
int id; /*id del server*/
int c; /* numero client connessi al server*/
int c_max; /*numero client max supportati dal server*/
unsigned long tx, rx; /* bytes mandati, ricevuti */
unsigned int down; /*downtime counter*/
};

/*altre strutture*/

#endif




la riga 18 coincide proprio con quella di colore blu..

c0der
21-12-2012, 12:48
Subito dopo:

#ifndef structures_h
#define structures_h

aggiungi:
#include <netinet/in.h>

Devour
21-12-2012, 12:52
ok, adesso non dà più errore...ma nella compilazione ora mi dà questi :cry:

gcc: error: structures-config: No such file or directory
gcc: error: unrecognized option ‘--libs’

c0der
21-12-2012, 13:04
Questo è un altro problema, forse dovevi aprire una nuova discussione.
Che sistema di compilazione usi? Makefile scritti a mano? autotools?

Devour
21-12-2012, 13:06
utilizzo netbeans ide su linux..compilo direttamente con questo!

c0der
21-12-2012, 13:08
È meglio che apri una nuova discussione, questa ha come titolo "field has incomplete type", se uno poi ricerca per titolo nel forum trova cosa diverse da quelle che stava cercando. Anche il regolamento lo dice.

Devour
21-12-2012, 13:12
va bene...intanto grazie per aver risolto l'altro problema!

Loading