Bonjour tout le monde,

Je suis en train de développer un petit projet. J'ai pour cela découper mon code en module, et chaque module a son header.
Tout fonctionnait correctement, jusqu'à ce que je décide d'utiliser une structure sur plusieurs modules de mon programme.
Pour faire simple, quand je met le include de ma structure dans un des headers, le compilateur me sort une erreur de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error: redefinition of ...
.
Et lorsque que je l'enlève il met sort une erreur de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error: unknown type name
.

Je me suis concentré sur les erreurs d'un seul fichiers car les erreurs sont les mêmes pour tous les fichiers.

Voici ma structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
typedef struct UserStruct
{
	char* name;
	char* lg;
	char* prompt;
	char* passwd;
}US;
Voici les erreurs du compilateur :
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
 
/* SANS LE INCLUDE */
 
In file included from ../ModeLangageNaturel/ModeLangageNaturelFonctions.c:5:0:
../ModeLangageNaturel/ModeLangageNaturelFonctions.h:5:27: error: unknown type name ‘US’
 void ListerFichier(char*, US*);
                           ^
../ModeLangageNaturel/ModeLangageNaturelFonctions.h:6:22: error: unknown type name ‘US’
 void ListerProcessus(US*);
                      ^
../ModeLangageNaturel/ModeLangageNaturelFonctions.c:16:34: error: unknown type name ‘US’
 void ListerFichier (char* param, US* pUser)
                                  ^
../ModeLangageNaturel/ModeLangageNaturelFonctions.c:35:23: error: unknown type name ‘US’
 void ListerProcessus (US* pUser)
 
/* SANS LE INCLUDE */
 
/* AVEC LE INCLUDE */
 
In file included from ../ModeLangageNaturel/ModeLangageNaturelFonctions.h:3:0,
                 from shell.c:8:
../ModeLangageNaturel/../struct.h:1:16: error: redefinition of ‘struct UserStruct’
 typedef struct UserStruct
                ^
In file included from ../Boot/boot.h:4:0,
                 from shell.c:4:
../Boot/../struct.h:1:16: note: originally defined here
 typedef struct UserStruct
                ^
In file included from ../ModeLangageNaturel/ModeLangageNaturelFonctions.h:3:0,
                 from shell.c:8:
../ModeLangageNaturel/../struct.h:7:2: error: conflicting types for ‘US’
 }US;
  ^
In file included from ../Boot/boot.h:4:0,
                 from shell.c:4:
../Boot/../struct.h:7:2: note: previous declaration of ‘US’ was here
 }US;
  ^
 
/* AVEC LE INCLUDE */
Je place mon include dans le header de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ModeLangageNaturelFonctions.h
sous forme car il est dans un dossier juste avant.
Je fais peut être une erreur de débutant ? J'ai regardé sur internet, on parlait de déclarer la structure en globale mais j'ai toujours des erreurs. J'ai vu aussi le mot clef extern qui serai peut être la clef mais je n'arrive pas à comprendre comment s'en servir.

Voici pour résumer mon problème, (j'ai pensé qu'un schéma serai parfait). J'ai mon struct.h qui doit être accessible par tout le monde, mais je ne sais pas où le mettre pour qu'il le soit.

Untitled.pdf

Merci d'avance.