#1 Le 27/05/2013, à 18:37
- plasticmandunk
erreur de compilation apres mise à niveau 13.04 [résolu]
Bonjour, voila deux semaines que j'avais fini un tp sur les arbres et les files , entre temps j'ai fait la mise à nouveau vers 13.04 et là j'ai une erreur d'execution à chaque fois que je compile mon File.c , il n ereconnait pas le type File , pourtant j'ai bien mis les include.
voila le File.c
#ifndef _FILE
#define _FILE
#include "Liste.h"
void initialiserFile(File * F)
/* Precondition : *pF non prealablement initialisee
Postcondition : *pF initialisee en file vide */
{
initialiserListe(F);
}
void testamentFile(File * F)
/* Precondition : *F prealablement initialisee
Postcondition : *F prete a disparaitre (ne doit plus etre utilisee) */
{
testamentListe(F);
}
void affecterFile(File * F1, const File * F2)
/* Precondition : *F1 et F2 initialisees
Postcondition : *F1 et F2 correspondent a des Files identiques
mais independantes */
{
affecterListe (F1,F2);
}
unsigned int nbElementsFile(const File * F)
/* Precondition : F initialisee
Resultat : retourne le nombre d'items presents dans la file F */
{
nbElementsListe(F);
}
void enfilerFile(File * F, void * adr)
/* Precondition : *F et e prealablement initialises
Postcondition : adr ajoutee en fin de file */
{
ajouterEnQueueListe(adr,F);
}
void defilerFile(File * F)
/* Precondition : *F initialisee et non vide
Postcondition : l'element de tete de *F est supprime ("first in,
first out") */
{
supprimerTeteListe(F);
}
void * premierDeLaFile(const File * F)
/* Precondition : F initialisee et non vide
Resultat : l'adresse qui se trouve en tete de f ("first in") */
{
Cellule * premiereCelluleListe(const Liste * l);
}
int testFileVide(const File * F)
/* Precondition : F initialisee
Resultat : 1 si F est vide, 0 sinon */
{
estVideListe(F);
}
ensuite voila le File.h
#ifndef _FILE
#define _FILE
#include "Liste.h"
#include "File.c"
typedef Liste File;
void initialiserFile(File * F);
/* Precondition : *pF non prealablement initialisee
Postcondition : *pF initialisee en file vide */
void testamentFile(File * F);
/* Precondition : *F prealablement initialisee
Postcondition : *F prete a disparaitre (ne doit plus etre utilisee) */
void affecterFile(File * F1, const File * F2);
/* Precondition : *F1 et F2 initialisees
Postcondition : *F1 et F2 correspondent a des Files identiques
mais independantes */
unsigned int nbElementsFile(const File * F);
/* Precondition : F initialisee
Resultat : retourne le nombre d'items presents dans la file F */
void enfilerFile(File * F, void * adr);
/* Precondition : *F et e prealablement initialises
Postcondition : adr ajoutee en fin de file */
void defilerFile(File * F);
/* Precondition : *F initialisee et non vide
Postcondition : l'element de tete de *F est supprime ("first in,
first out") */
void * premierDeLaFile(const File * F);
/* Precondition : F initialisee et non vide
Resultat : l'adresse qui se trouve en tete de f ("first in") */
int testFileVide(const File * F);
/* Precondition : F initialisee
Resultat : 1 si F est vide, 0 sinon */
#endif
et voila ce qui se passe apres compilation:
gcc -c -Wall -ansi -pedantic File.c
In file included from File.c:6:0:
File.c:1:0: erreur: #ifndef non terminé
File.c:11:22: erreur: unknown type name ‘File’
File.c:18:20: erreur: unknown type name ‘File’
File.c:25:19: erreur: unknown type name ‘File’
File.c:25:19: erreur: unknown type name ‘File’
File.c:33:1: erreur: unknown type name ‘File’
File.c: In function ‘nbElementsFile’:
File.c:37:4: attention : passing argument 1 of ‘nbElementsListe’ from incompatible pointer type [enabled by default]
In file included from File.c:5:0:
Liste.h:32:14: note: expected ‘const struct Liste *’ but argument is of type ‘const int *’
File.c: Hors de toute fonction :
File.c:41:18: erreur: unknown type name ‘File’
File.c:49:18: erreur: unknown type name ‘File’
File.c:58:1: erreur: unknown type name ‘File’
File.c:65:1: erreur: unknown type name ‘File’
File.c: In function ‘testFileVide’:
File.c:69:4: attention : passing argument 1 of ‘estVideListe’ from incompatible pointer type [enabled by default]
In file included from File.c:5:0:
Liste.h:27:5: note: expected ‘const struct Liste *’ but argument is of type ‘const int *’
File.c: Hors de toute fonction :
File.c:1:0: erreur: #ifndef non terminé
File.c: In function ‘testFileVide’:
File.c:70:1: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
File.c: In function ‘premierDeLaFile’:
File.c:63:1: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
File.c: In function ‘nbElementsFile’:
File.c:38:1: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
Je ne comprends pas pourquoi mon File n'est pas reconnu , pourtant j'ai bien mis typedef Liste File .
Dernière modification par plasticmandunk (Le 29/05/2013, à 18:53)
Hors ligne
#2 Le 28/05/2013, à 09:15
- claudius01
Re : erreur de compilation apres mise à niveau 13.04 [résolu]
Bonjour,
Ne serait-ce pas à cause de l'erreur :
File.c:1:0: erreur: #ifndef non terminé
#endif ... que je ne vois que dans le File.h ;-)
Edit : En marge de ce problème, je trouve inopportun d'inclure la séquence de protection #ifndef _FILE + #define _FILE dans le File.c et surtout d'inclure File.c dans le File.h ?!..
Cordialement, A+
--
Claudius
Dernière modification par claudius01 (Le 28/05/2013, à 10:02)
Hors ligne