erreur compilation avec fichiers .h et .c
Salut à tous,
j'essaie de coder un module pour gérer une liste chaînée.
Quand je place tout mon code dans le fichier "main.c", il compile et tout est ok.
Quand je place les structures et les prototypes dans le fichier "TabGnrq.h", et les fonctions dans le fichier "TabGnrq.c", j'ai deux erreurs.
La version qui fonctionne :
contenu du fichier "main.c" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| //directives préprocesseur//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//variables globales et structures
typedef struct Element Element;
struct Element {
char valeur[100];
Element *suivant;
};
typedef struct ListeElement ListeElement;
struct ListeElement {
Element *premier;
Element *dernier;
int nbElement;
};
//prototypes
ListeElement *initialiserListe();
int detruireListe(ListeElement *liste);
int main(int argc, char *argv[]) {
//créer la liste
ListeElement *listeTab1 = initialiserListe();
detruireListe(listeTab1);
return 0;
}
ListeElement *initialiserListe() {
//initialiser la liste
ListeElement *liste = malloc(sizeof(*liste));
if (liste == NULL) {
exit(EXIT_FAILURE);
}
liste->nbElement = 0;
liste->premier = NULL;
liste->dernier = NULL;
return liste;
}
int detruireListe(ListeElement *liste) {
//détruire la liste entière
//supprimer tous les éléments
printf("\n\ndetruireListe");
Element *actuel = NULL;
Element *suivant = NULL;
for (actuel=liste->premier; actuel!=NULL; actuel = suivant) {
printf("\nactuel : %p", actuel);
suivant = actuel->suivant;
free(actuel);
}
//libérer la mémoire de la liste elle-même
free(liste);
return 0;
} |
La version qui ne compile pas :
contenu du fichier "main.c" :
Code:
1 2 3 4 5 6 7 8 9 10 11
| #include <stdio.h>
#include <stdlib.h>
#include "TabGnrq.h"
int main(int argc, char *argv[]) {
//créer la liste
ListeElement *listeTab1 = initialiserListe();
//détruire la liste
detruireListe(listeTab1);
return 0;
} |
contenu du fichier "TabGnrq.h" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #ifndef DEF_TABGNRQ
#define DEF_TABGNRQ
#include <stdio.h>
#include <string.h>
//variables globales et structures
typedef struct Element Element;
struct Element {
char valeur[100];
Element *suivant;
};
typedef struct ListeElement ListeElement;
struct ListeElement {
Element *premier;
Element *dernier;
int nbElement;
};
//prototypes
ListeElement *initialiserListe();
int detruireListe(ListeElement *liste);
#endif |
le fichier "TabGnrq.c" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| ListeElement *initialiserListe() {
//initialiser la liste
ListeElement *liste = malloc(sizeof(*liste));
if (liste == NULL) {
exit(EXIT_FAILURE);
}
liste->nbElement = 0;
liste->premier = NULL;
liste->dernier = NULL;
return liste;
}
int detruireListe(ListeElement *liste) {
//détruire la liste entière
//supprimer tous les éléments
printf("\n\ndetruireListe");
Element *actuel = NULL;
Element *suivant = NULL;
for (actuel=liste->premier; actuel!=NULL; actuel = suivant) {
printf("\nactuel : %d", actuel);
suivant = actuel->suivant;
free(actuel);
}
//libérer la mémoire de la liste elle-même
free(liste);
return 0;
} |
Les deux erreurs concernent le fichier "TabGnrq.c" :
ligne 1 : expected '=', ', ', ';', 'asm' or '__attribute__' before '*' token
ligne 15 : expected ')' before '*' token
Je suis preneur d'une piste...