Bonjour,
Je travaille actuellement sur un projet dans lequel j'ai des erreur de compilation du type "unknown type name" , "assignment makes pointer from integer without a cast" ou "implicit declaration of function". Je croit que ceci est du a la maniere dont j'utilise mes difféent fichier. Mon projet ce compose d'un main.c dans lequel je fait appel au fonction de la sdl pour mon interface graphique. j'ai un fichier polynome.c dans lequel j'ai des fonctions qui crée des polynôme et les manipule. Ce fichier est associer a polynome.h dans lequel j'ai mes prototype de fonction présent dans mon .c ainsi que la déclaration de structure qui ont pour but de gérer la forme des polynôme sous la forme d'une liste chaîné. Je dispose d'un troisième .c nommé sdl_fonction.c dans lequel j'ai des fonction comme l'affichage de texte ou encore la récupération. Sont .h associé contient donc les prototype des fonction de mon sdl_fonction.c j'ai aussi mi dedans une structure que je nomme paramètre qui contient plusieurs variable sur différent paramètre que prend la sdl (nom des image utilisé, taille, position...).
J'ai du loupé une étape dans la confection avec plusieurs fichier car je suis entrain d'adapté mon polynome.h pour qu'il fonctionne avec mon main et avoir un interface graphique représentant les différente chose faite avec. malgrés avoir mit les include dans de mes .h. Enfaîte, je croit que je fait des chose interdite, dans mon polynome .c, e tente d'utilisé des structure présente dans sdl_fonction.c, j'utilise également des fonction de sdl_fonction.c dns certaine fonction de mon polynome.c. Et dans mon main, je tente d'accéder à la structure polynome (ou plutot mon polynome sous forme de liste chainé).
voici ce que m'a sortit la dernière compilation:
voici également le polynome.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
38
39
40
41
42 polynome.h:50:45: error: unknown type name parametre DevForm creationMonome(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev, int degre); ^ polynome.h:51:43: error: unknown type name parametre DevForm creationPoly(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev); ^ sdl_example.c: In function main: sdl_example.c:95:2: warning: implicit declaration of function creationPoly [-Wimplicit-function-declaration] Poly1.dev=creationPoly(screen, prog, choix, Poly1.dev); ^ sdl_example.c:95:11: warning: assignment makes pointer from integer without a cast [enabled by default] Poly1.dev=creationPoly(screen, prog, choix, Poly1.dev); ^ In file included from polynome.c:34:0: polynome.h:50:45: error: unknown type name parametre DevForm creationMonome(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev, int degre); ^ polynome.h:51:43: error: unknown type name parametre DevForm creationPoly(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev); ^ polynome.c: In function creationMonome: polynome.c:47:2: warning: implicit declaration of function SDL_LoadBPM [-Wimplicit-function-declaration] background=SDL_LoadBPM(prog.backgroundFile); ^ polynome.c:47:12: warning: assignment makes pointer from integer without a cast [enabled by default] background=SDL_LoadBPM(prog.backgroundFile); ^ polynome.c: In function creationPoly: polynome.c:107:12: error: request for member SDL_LoadBPM in something not a structure or union background. SDL_LoadBPM(prog.backgroundFile); ^ polynome.c:125:13: warning: assignment makes pointer from integer without a cast [enabled by default] background=SDL_LoadBPM(prog.backgroundFile); ^ In file included from sdl_fonction.c:8:0: polynome.h:50:45: error: unknown type name parametre DevForm creationMonome(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev, int degre); ^ polynome.h:51:43: error: unknown type name parametre DevForm creationPoly(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev); ^
et mon sdl_fonction.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 #ifndef POLYNOME_H #define POLYNOME_H #include <stdlib.h> #include <stdio.h> #include <time.h> #include <string.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <SDL/SDL_ttf.h> #include "polynome.h" #include <complex.h> #include <math.h> #include <float.h> typedef struct developpee developpee; typedef struct factorisee factorisee; typedef struct polynome polynome; struct developpee{ double complex monome; int deg; struct developpee *prec; struct developpee *next; }; typedef developpee* DevForm; struct factorisee{ double complex racine; struct developpee *prec; struct factorisee *next; }; typedef factorisee *FactForm; struct polynome{ DevForm dev; FactForm fact; }; typedef polynome *POLYNOME; //----------PROTOTYPE---------- /*je fait intervenir les fonction de l'autre fichier uniquement pour la création, si cela pose problème, je peut déplacer ces fonction de création dans le même fichier qu'est mon main. */ DevForm creationMonome(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev, int degre); DevForm creationPoly(SDL_Surface *screen, parametre prog, int choix, DevForm PolyDev); void afficher(DevForm PolyDev,char source[]); DevForm additionPoly(DevForm PolyDev1, DevForm PolyDev2, DevForm PolyDev3); DevForm soustractionPoly(DevForm PolyDev1, DevForm PolyDev2, DevForm PolyDev3); void comparer(DevForm PolyDev1, DevForm PolyDev2, int numeroPoly1, int numeroPoly2); DevForm multiplicationPoly(DevForm PolyDev1, DevForm PolyDev2, DevForm PolyDev3); int taille(DevForm PolyDev); DevForm insertion(DevForm PolyDev, developpee* monome); double complex evaluationPoint(DevForm PolyDev, double complex z); void evaluationPointExe(DevForm PolyDev); DevForm derivee(DevForm PolyDev1, DevForm PolyDev2); DevForm primitive(DevForm PolyDev1, DevForm PolyDev2); void division(DevForm PolyDev1, DevForm PolyDev2, DevForm tab[], int *p_retour); void divisionPoly(DevForm PolyDev1, DevForm PolyDev2, DevForm tab[]); DevForm PGCDPoly(DevForm PolyDev1, DevForm PolyDev2, DevForm PolyDev3); DevForm conjugue(DevForm PolyDev1, DevForm PolyDev2); void extractionReelImag(DevForm PolyDev, char dest[]); DevForm compositionPoly(DevForm PolyDev1, DevForm PolyDev2, DevForm PolyDev3); DevForm supprimerDevMaillon(DevForm PolyDev); void supprimerDev(DevForm PolyDev); #endif
Pour ce qui est de mon main, il me permet d'initialisé sdl, de créer mon interface, et de saisir un event au niveau des touche du clavier. Différente touches seront utilisé qui impliqueront différente action sur les polynôme (création, addition...)
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 #ifndef SDLFONCTION_H #define SDLFONCTION_H #include <stdlib.h> #include <stdio.h> #include <time.h> #include <string.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <SDL/SDL_ttf.h> #include "polynome.h" #include "sdl_fonction.h" #include <complex.h> #include <math.h> #include <float.h> typedef struct parametre parametre; /*toute les variable de cettestructure sont initialisé dans le main, elle aie ensuite passer en parametre de fonction pour certain truc. Si cette derniere pose soucis, je peut la retiré et m'éforcer de les déclarer a chaque fois, j'avais fait cela pour économisé de la place et du temp*/ struct parametre{ int width; int height; char tableauFile[30]; char chenFile[30]; char boxFile[30]; char backgroundFile[30]; int policeTableau; int policeTexte; SDL_Rect positionFond; SDL_Rect positionChen; SDL_Rect positionBox; SDL_Rect positionBackground; }; //----------PROTOTYPE---------- int ask(SDL_Surface *screen, SDL_Rect* offset, const char * question, unsigned int maxAnswerSize, char answer[maxAnswerSize], int taille, char police[], int red, int green, int blue); int show(SDL_Surface *screen, SDL_Rect* offset, const char * message, int delay_in_ms, int taille, char police[], int red, int green, int blue); void start(SDL_Surface *screen, parametre prog); #endif
cela pourra peut être vous éclaircir sur l'architecture d mon projet, et ce qu'il fait.
je voudrais donc avoir un peut d'aide afin de remanier tout ces fichier pour que mon projet puisse compilé. Sachant que mes fonction de manipulation ne pose pas de problème, je les ai tous testé, dans le terminal. Enfaîte les problème ont commencer lorsque j'ai débuté la création de l'interface graphique avec sdl.
merci d'avance de l'aide que vous m’apporter car la je suis pas mal perdu avec la gestion de mes fichier
Partager