Bonjour,
voici mon problème :
J'ai commencé un projet avec eclipse sous Linux en C avec l'interface graphique SDL.
J'ai commencé à rédiger mon code main.c, son interface.c, un fichiers fish.c et leur en tête interface.h et fish.h. Jusque la pas de probleme.
Je rajoute maintenant shoal.c et shoal.h, pas de problème jusqu'à ce que je souhaite utiliser une structure de ces fichiers dans fish.c ou inversement (les structures ont pour nom 'struct fish' et 'struct shoal'.
En bidouillant j'arrive soit à me retrouver avec l'erreur suivante soit avec une erreur similaire mais pour 'shoal' :
make all
gcc -o shoal.o -c src/shoal.c -std=c99 -g -Wall -Werror -ansi -pedantic -I ./include
In file included from src/shoal.c:13:0:
./include/shoal.h:17:1: erreur: unknown type name ‘Fish’
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 main.c : #include <stdio.h> #include <stdlib.h> #include <SDL/SDL.h> #include <time.h> #include <interface.h> #include <fish.h> #include <shoal.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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 fish.c : #include <stdio.h> #include <stdlib.h> #include <SDL/SDL.h> #include <math.h> #include "interface.h" #include "fish.h" #include "shoal.h" /* * Structure d un poisson. * Elle contient des variables propres aux poissons et liees a leur déplacement, * ainsi qu a leur status. */ struct fish{ double weight; double size; double speed; double color; double champVision; double champDisplacement; Position position; Position direction; int boolShoal; }; /* * Structure d une position. * Elle contient l abscisse et l ordonnee d un point. */ struct position{ int x; int y; };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 fish.h : #include <SDL/SDL.h> typedef struct fish *Fish; typedef struct position *Position;
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 shoal.c #include <stdio.h> #include <stdlib.h> #include <math.h> #include "interface.h" #include "shoal.h" #include "fish.h" /* * Structure d un banc de poissons. * Elle contient des poissons, le nom du chef du banc leur nombre. */ struct shoal{ Fish *tabShoal; Fish chief; int nbrFish; }; /* * Structure de bancs de poissons. * Elle contient des bancs de poissons et leur nombre. */ struct shoals{ Shoal *tabShoals; int nbrShoals; };Et voici mon makefile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 shoal.h : typedef struct shoals *Shoals; typedef struct shoal *Shoal;
Merci à tout ceux qui pourront m'aider cela fait 2jours que je suis bloqué par cette erreur...
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 PREFIX= . INCDIR = $(PREFIX)/include SRCDIR = $(PREFIX)/src #le compilateurs CC= gcc #les flags de compilation CFLAGS= -std=c99 -g -Wall -Werror -ansi -pedantic #les flags du preprocesseur CPPFLAGS= -I $(INCDIR) #les flags de l'editeur de liens LDFLAGS= -L -L/usr/lib64 -lSDL -lpthread #les librairies utilisees LDLIBS= -lm #Les fichiers objets a inserer dans la bibliotheque LIBOBJS= fish.o shoal.o interface.o main.o OUTFILE= testPoisson #les dependances all: $(OUTFILE) $(OUTFILE): $(LIBOBJS) $(CC) -o $@ $^ $(LDFLAGS) $(CPPFLAGS) fish.o: $(SRCDIR)/fish.c $(CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS) shoal.o: $(SRCDIR)/shoal.c $(CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS) interface.o: $(SRCDIR)/interface.c $(CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS) main.o: $(SRCDIR)/main.c $(CC) -o $@ -c $< $(CFLAGS) $(CPPFLAGS) clean : rm -f $(OUTFILE) $(LIBOBJS)
Partager