Probleme Pointeurs/Structures en C avec Devcp

Fermé
bubqr - 23 mars 2008 à 19:30
 bubqr - 24 mars 2008 à 13:09
Bonjour,

Je me doute que mes questions doivent etre probablement tres stupides, mais n'ayant plus touche au C depuis longtemps, j'ai du mal avec certaines choses, notamment les pointeurs/Structures, avec des erreurs que je ne comprends pas.

Voila mon code(J'ai selectionné que ce que je jugeais utile, j'espere que ca suffira

main.c:

#include "structures.h"

game = (struct partie *)malloc(sizeof(struct partie)); Ligne 13

initialiser(game->othellier); Ligne 19

structures.h :

typedef struct partie *partie;
struct partie {
int curseur;
int trait;
int longueur;
int final;
joueur joueur[2];
struct coup coup[MAX_COUPS];
othellier othellier;
};

typedef struct othellier *othellier;
struct othellier{
int damier[MAX_INDEX];
int materiel[JOUEURS];
};

Log :

Exécution de make...
C:\Dev-Cpp\bin\make.exe -f "C:\Dev-Cpp\Othelooo\Makefile.win" all
C:\Dev-Cpp\bin\gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"

main.c:13: warning: initialization from incompatible pointer type

main.c:13: error: initializer element is not constant
main.c:13: warning: data definition has no type or storage class
main.c: In function `main':
main.c:19: error: request for member `othellier' in something not a structure or union

C:\Dev-Cpp\bin\make.exe: *** [main.o] Error 1


Merci à ceux prets a passer du temps pour m'aider !

4 réponses

Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
24 mars 2008 à 12:29
Bonjour,

en effet, il semblerait que le type de game soit inconnu à la ligne 13.

Pour le type partie c'est syntaxiquement correct en C.
Le compilateur ne peut pas confondre les types: "struct partie" et "partie", ce sont deux types bien distincts.

M.
1
Up!

Desolé d'upper, mais comme je suis en plein Paques = Fais ton projet, et que cela me bloque pas mal(La je code en aveugle en attendant de trouver une solution, ce que j'ai tenté de faire pendant 2 heures), je suis vraiment en galere !

Merci a toute ame charitable.
0
Bonjour

Pourrais-tu montrer la ligne de définition de game ?

D'autre part typedef struct partie *partie; est très étrange... reprendre le même nom pour la structure et le pointeur, pour créer la confusion, c'est l'idéal. Je ne sais pas comment le compilateur s'y retrouve. D'ailleurs, il ne s'y retrouve peut-être pas...
0
Bonjour, tout d'abord merci pour le temps passé sur mon cas.

Les definitions de structures nous ont été données par le prof, et j'avoue que j'ai eu du mal a me faire au fait que l'alias avait le meme nom que la structure, mais je fais quand meme confiance ;)

En ce qui concerne la definition de game, je l'avais enlevé esperant que le malloc suffirait, car quadn je met la definition, voial ce que ca donne :

struct partie *game = NULL;
game = malloc(sizeof(struct partie));


main.c:13: error: conflicting types for 'game'

main.c:12: error: previous definition of 'game' was here
main.c:13: warning: initialization makes integer from pointer without a cast
main.c:13: error: initializer element is not constant
main.c:13: warning: data definition has no type or storage class
0