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" :
La version qui ne compile pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
contenu du fichier "main.c" :
contenu du fichier "TabGnrq.h" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
le fichier "TabGnrq.c" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Les deux erreurs concernent le fichier "TabGnrq.c" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
ligne 1 : expected '=', ', ', ';', 'asm' or '__attribute__' before '*' token
ligne 15 : expected ')' before '*' token
Je suis preneur d'une piste...
Partager