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 :Voici les erreurs du compilateur :
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;Je place mon include dans le header de
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 */sous forme
Code : Sélectionner tout - Visualiser dans une fenêtre à part ModeLangageNaturelFonctions.hcar il est dans un dossier juste avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "../struct.h"
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.
Partager