C : dereferencing pointer to incomplete type
Fermé
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
-
12 déc. 2003 à 20:33
nabelou1 Messages postés 11 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 5 mai 2008 - 31 déc. 2007 à 00:55
nabelou1 Messages postés 11 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 5 mai 2008 - 31 déc. 2007 à 00:55
4 réponses
Salut,
A ta place, j'écrirais plutôt :
////boat.h//////
typedef struct boat *pboat;
//boat.c///////
struct boat {
int ymin, ymax;
int xmin, xmax;
int position;
};
///area.h//////////
#include "boat.h"
//et le reste
////area.c////////
int storeInArea (pboat bt, area a) {
/*ligne 22*/if (bt->xmax - bt->xmin > 1 && bt->ymax - bt->ymin > 1)
[tab] return ERROR;
///et le reste
}
[/code]
Ca devrait mieux marcher.
Car, tu donnes le même nom à la structure boat et au type défini comme étant un pointeur sur cette même structure. Ca fait pas bon ménage !
A+
A ta place, j'écrirais plutôt :
////boat.h//////
typedef struct boat *pboat;
//boat.c///////
struct boat {
int ymin, ymax;
int xmin, xmax;
int position;
};
///area.h//////////
#include "boat.h"
//et le reste
////area.c////////
int storeInArea (pboat bt, area a) {
/*ligne 22*/if (bt->xmax - bt->xmin > 1 && bt->ymax - bt->ymin > 1)
[tab] return ERROR;
///et le reste
}
[/code]
Ca devrait mieux marcher.
Car, tu donnes le même nom à la structure boat et au type défini comme étant un pointeur sur cette même structure. Ca fait pas bon ménage !
A+
D'ailleurs, il vaudrait mieux mettre le struct boat et le typedef dans le même fichier boat.h.
Ensuite, N'oublie pas d'inclure ce fichier dans area.c (soit directement en incluant boat.h, soit en l'incluant dans area.h mais en n'oubliant pas d'inclure area.h dans area.c).
Re-A+
Ensuite, N'oublie pas d'inclure ce fichier dans area.c (soit directement en incluant boat.h, soit en l'incluant dans area.h mais en n'oubliant pas d'inclure area.h dans area.c).
Re-A+
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
12 déc. 2003 à 22:15
12 déc. 2003 à 22:15
salut, merci , mais cela ne doit pas etre le bleme, car en C ansi la declaration d'un type structure se fait avec "struct <typestructure> <nomvar>" et ce n'est pas la premiere fois q je le fais.
Et pourtant le meme dereferencement marche ds boat.c ( createBoat (boat bt)) .
Ds ts les cas merci. (j'ai oublie de preciser, je suis sous linux).
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Et pourtant le meme dereferencement marche ds boat.c ( createBoat (boat bt)) .
Ds ts les cas merci. (j'ai oublie de preciser, je suis sous linux).
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
nabelou1
Messages postés
11
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
5 mai 2008
3
31 déc. 2007 à 00:55
31 déc. 2007 à 00:55
bonjour
je vous demande de bien vouloir me donner un coup de main.
j'ai moi aussi un ce pbleme de dereferencing pointer to incomplet type.
en fait je lit dans un fichier les 2 premiers champs d'une variable de type struct qui correspond a un maillon d'une lisye chainée
voici le code
void extraction() /*extraction de données a partir d'un fichier*/
{
porigine cour=tete;
porigine nouveau;
fic=fopen("reseau.txt","r");
cour=0;
fscanf(fic,"%d%\n\n",&nb_ville);
for(i=0;i<nb_ville;i++)
{
nouveau=(porigine)malloc(sizeof(origine));
fscanf(fic,"%S %d",nouveau->nom,nouveau->nb);v[i]=nouveau->nom; /* c'et la que se pose le probleme*/
for(j=0;j<nb;j++)
{
fscanf(fic,"%s %d %d\n",nouveau->vois[j],nouveau->dvois[j],nouveau->type[j]);
}
nouveau->suiv=cour;tete=nouveau;
cour=tete;
fscanf("\n");
}
}
je vous demande de bien vouloir me donner un coup de main.
j'ai moi aussi un ce pbleme de dereferencing pointer to incomplet type.
en fait je lit dans un fichier les 2 premiers champs d'une variable de type struct qui correspond a un maillon d'une lisye chainée
voici le code
void extraction() /*extraction de données a partir d'un fichier*/
{
porigine cour=tete;
porigine nouveau;
fic=fopen("reseau.txt","r");
cour=0;
fscanf(fic,"%d%\n\n",&nb_ville);
for(i=0;i<nb_ville;i++)
{
nouveau=(porigine)malloc(sizeof(origine));
fscanf(fic,"%S %d",nouveau->nom,nouveau->nb);v[i]=nouveau->nom; /* c'et la que se pose le probleme*/
for(j=0;j<nb;j++)
{
fscanf(fic,"%s %d %d\n",nouveau->vois[j],nouveau->dvois[j],nouveau->type[j]);
}
nouveau->suiv=cour;tete=nouveau;
cour=tete;
fscanf("\n");
}
}