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 : 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;
}
La version qui ne compile pas :
contenu du fichier "main.c" :
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;
}
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
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 : 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;
}
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...