Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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