Bonjour,

j'ai un problème à propos "les variables globales".. et la portée des nouveaux types pour tout les fichiers .c du meme projet..
j'ai fait la recherche à l'internet.. et j'ai fait la déclaration des variables par "extern" etc..
et ça compile mais il aura une erreur dans l'exécution.. lors de l'appel d'une fonction d'affichage qui prend en paramètre une variable globale traitée dans une autre fonction..
Mon travail exige que tout mes fonction renvoie soit true ou false.. (et pas une variable) donc le traitement ce fait sur les variables entrées en réference..

voici le code en résumé.. :

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
 
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
 
typedef struct s_tag_
{
    char name[512];
    char value[512];
    struct s_tag_ *nxt;
}s_tag; 
 
typedef s_tag* taglist; // type des listes chainées (je veux qu'il soit globale)
 
taglist listep = NULL; // variable globale
 
int fct_parsing (char *listep);
void afficherListe(taglist listep);
 
int main()
{
    fct_parsing(&listep);
    afficherListe(listep);
    return 0;
}
et voici le fichier parsing.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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE 1
#define FALSE 0

typedef struct s_tag_
{
    char name[512];
    char value[512];
    struct s_tag_ *nxt;
}s_tag; // j'ai répéter la définition des type pour qu'il compile :oops:
typedef s_tag* taglist; // ...

extern taglist listep;

/// affichage ///
void afficherListe(taglist listep)
{
    
    //s_tag *tmp = listep;
    while(listep != NULL)
    {
        printf("name: %s\nvalue: %s\n", listep->name, listep->value);
        listep = listep->nxt;
    }
}


int texte_parser (taglist *listep)
{
    listep = NULL;
    /* des traitements sur un fichier pour récupérer des valeurs "tagnames et tagvalues"
    ajouterEnFin(tagnames, tagvalues, &listep); // remplissage dans la liste chainée
    afficherListe(listep); // ici l'affichage est parfait !!
    return 0;
}

int fct_parsing (taglist *listep)
{
    texte_parser(&listep);
    afficherListe(listep); // ici l'affichage crash !!
    return 0;
}
Merci de m'aider !