Bonsoir,
J'ai crée un petit programme, dont une fonction a du mal à compiler, et après plusieurs recherches, je ne trouve pas la solution. Mais je sais que ça doit être quelque chose de simple.
Voici la partie du main concernée: (Je crée une "Etiquette" aec un int, et un tableau de char)
struct Etiquette{
int adresse;
char nom[20];
};
//Je crée un tableau de 20 Etiquettes
struct Etiquette t[20];
//J'appelle la fonction, voir plus bas, censée écrire dans ce tableau, c'est-à-dire donner l'adresse et le nom aux structures
recupereEtiquettes(src, t, 20);
Et voici la fonction appelée (avec l'erreur de compliation):
void recupereEtiquettes(FILE * source, struct Etiquette t[], int taille){
int i=0, numligne=0;
char *ligne=(char *)malloc(60);
do{
fgets(ligne, 60, source);
//Je récupere une ligne d'un fichier
if(isEtiquette(ligne)){
t[i]={numligne, nomEtiquette(ligne)}; //Je définis ma structure---------->Erreur de compliation (voir plus bas)
i+=1;
}
numligne+=(sizeof(int));
}while(ligne!=NULL && i<taille);
if(i>=taille) printf("Trop d'étiquettes à stocker!\n");
}
Enfin; l'erreur de compliation est:(Tout concerne la meme ligne)
Invalid use of undefined type 'struct Etiquette'
Defercencing pointer to incomplete type
Syntax error before '{' token
ps: Erreur de compliation aussi si je mets à la place de cette ligne:
strcpy(t[i].nom, nomEtiquette(ligne));
t[i].adresse=numligne;
Merci beaucoup! (J'utilise Code::Blocks)

le (char *) est inutile et dangereux. Il ne faut pas "caster" (convertir) le retour de malloc.
des fois c'est nécessaire
typedef struct Element_{ struct Element_ *suivant; void *donnee; }Element; Element *nouveau; nouveau = (Element *) malloc (sizeof(Element));