Bonjour,
J'ai un 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 #include <stdio.h> #include <stdbool.h> #include "map.h" #include "hero.h" int main() { int map[9][9] = { {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}}; Hero hero; hero.potion = 5; hero.pv = 1; aff_map(map, &hero); return 0; }
Puis j'ai un hero.h et hero.c :
hero.h :
hero.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #ifndef HERO_H #define HERO_H typedef struct Hero { int potion; int pv; } Hero; void aff_pv(Hero *hero); #endif
__________________________________
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "hero.h" #include <stdio.h> void aff_pv(Hero *hero) { printf("pv:%d\n", hero->pv); printf("potion:%d\n", hero->potion); }
Et enfin un map.h et map.c :
map.h :
map.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #ifndef MAP_H #define MAP_H void aff_map(int map[9][9], Hero *hero); #endif
J'ai souligné dans le fichier map.c la fonction que je cherche a utiliser dans la fonction aff_map().
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#include "map.h" #include "hero.h" #include <stdio.h> void aff_map(int map[9][9], Hero *hero) { aff_pv(&hero); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { printf("%d", map[i][j]); } printf("\n"); } }
Je n'arrive pas a faire ceci avec une structure, pourtant si je cherche a faire la même chose pour la fonction aff_map() dans le fichier hero.c, il me suffit de lui inclure le fichier map.h et de mettre ma fonction dans la fonction aff_pv() du fichier hero.c et ça fonctionne !
Voici le message d'erreur en console lors de la compilation avec gcc :
Quelqu'un a t il une solution pour utiliser une fonction comportant une structure d'un fichier externe, dans une autre fonction d'un autre fichier externe ?PS C:\Users\shamb\MonProg> gcc -Wall main.c map.c -o monCode.exe In file included from main.c:4: map.h:4:29: error: unknown type name 'Hero' 4 | void aff_map(int map[9][9], Hero *hero); | ^~~~ main.c: In function 'main': main.c:24:5: warning: implicit declaration of function 'aff_map' [-Wimplicit-function-declaration] 24 | aff_map(map, &hero); | ^~~~~~~ In file included from map.c:1: map.h:4:29: error: unknown type name 'Hero' 4 | void aff_map(int map[9][9], Hero *hero); | ^~~~ map.c: In function 'aff_map': map.c:8:12: warning: passing argument 1 of 'aff_pv' from incompatible pointer type [-Wincompatible-pointer-types] 8 | aff_pv(&hero); | ^~~~~ | | | Hero ** In file included from map.c:2: hero.h:10:19: note: expected 'Hero *' but argument is of type 'Hero **' 10 | void aff_pv(Hero *hero); | ~~~~~~^~~~
Remarque : même sans passer par une fonction, le fait de vouloir utiliser une structure ailleurs que dans le main.c donne aussi des erreurs lors de la compilation.
Merci par avance.






Répondre avec citation



Partager