Probleme de compilation sous gcc

Résolu
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   -  
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
voici le message d'erreur lorsque j'essaye de compiler :

marven@marven-desktop:~/Documents/labo/source$ make
gcc -c main.c -o main.o
In file included from main.c:3:
jeu.h:2: erreur: expected «)» before «*» token

qq peut m'aider svp

11 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
donne le fichier main.c, sinon, ça va être dur.
0
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   2
 
Salut
Voici le code si vous voulez:

#include <stdio.h>

#include <stdlib.h>
#include "jeu.h"

#include "acceuil.h"

#include "menu.h"

#include "structures.h"

#include "outils.h"

#include "messages.h"



int main(){

//commende retournée

char commende;



//Variables bouléaines

int nouvellePartie = 1;

int sauvegardee = 1;



//L'espace mémoires contenant les différent attributs du jeu chargé

unJeu jeu;

initJeu(&jeu,0);



//Acceuil

acceuil();





MENU:

commende = menu(jeu.typeJeu);

switch (commende) {

case '1':goto JEU;

break;

case '2':goto SAUVEGARDER;

break;

case '3':goto PARTIE_CLASSIQUE;

break;

case '4':goto PARTIE_ACTION;

break;

case '5':goto CHARGER;

break;

case '6':goto MEILLEURS_SCORES;

break;

case '7':goto COMMENT_JOUER;

break;

case '8':goto APROPOS;

break;

case '9':goto QUITTER;

break;



}





//sauvegarder la partie en cour

SAUVEGARDER:

if (sauvegarderJeu(&jeu)) sauvegardee = 1; //La sauvegarde est réussie

goto MENU;



//chargement d'une paritie enregistrée

CHARGER:

if (chargerJeu(&jeu,sauvegardee)){ sauvegardee=1; nouvellePartie=0;}

goto MENU;



//nouvelle partie classique

PARTIE_CLASSIQUE:

if (!sauvegardee) if (!confirmer()) goto MENU ;

initJeu(&jeu,1);

nouvellePartie=1;

goto JEU;





//nouvelle partie action

PARTIE_ACTION:

if (!sauvegardee) if (!confirmer()) goto MENU;

initJeu(&jeu,2);

nouvellePartie=1;

goto JEU;





//Execution du jeu

JEU:

jouer(&jeu,nouvellePartie);

nouvellePartie=0; //la partie n'est plus nouvelle

sauvegardee=0; //le progrés dans le jeu n'est pas encore sauvegardé

goto MENU;



//consulter les meilleurs scores

MEILLEURS_SCORES:

printf("\n\n\t\tSorry! hight scores section is not implemented yet");

getch();

goto MENU;



//consulter l'aide

COMMENT_JOUER:

printf("\n\n\t\tSorry! help is not implemented yet ");

getch();

goto MENU;



//apropos du jeu bejeweled

APROPOS:

printf("\n\n\t\tSorry! apropos is not implemented yet");

getch();

goto MENU;



//quitter le jeu

QUITTER:

if (!sauvegardee){

if (quitter())goto FIN_PROGRAMME;

else goto MENU;

}else goto FIN_PROGRAMME;





FIN_PROGRAMME:

return 0;

}
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Au temps pour moi, c'était jeu.h qu'il fallait.
0
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   2
 
En fait voici le fichier jeu.h , les erreurs sont toujours les mêmes pour chaque prototype de fonction :


void jouer(unJeu * ,int );




int destruction(unJeu*);



void initGrille(unJeu*);



void permut(unJeu*,coords*);



void ranger(unJeu*);



int saisirCoords(coords*,unJeu *);


les erreurs apres l'execution de make:

marven@marven-desktop:~/Documents/labo/source$ make
gcc -c main.c -o main.o
In file included from main.c:3:
jeu.h:1: erreur: expected «)» before «*» token
jeu.h:3: erreur: expected «)» before «*» token
jeu.h:5: erreur: expected «)» before «*» token
jeu.h:7: erreur: expected «)» before «*» token
jeu.h:9: erreur: expected «)» before «*» token
jeu.h:11: erreur: expected «)» before «*» token
make: *** [main.o] Erreur 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Normal, "unJeu" n'est pas défini.
C'est quoi comme variable ?
0
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   2
 
unJeu est une structure déclarée dans "structures.h" dont j'ai inclut dont jeu.c
dois-je l'inclure aussi dans jeu.h?
pourquoi appeler un fichier .h dans un autre .h?
et si s'est pas déclaré l'erreur deverait etre du jenre "unJeu undeclared first in this function..."
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
ça devrais, mais bon, des fois les messages d'erreur sont... obscures.
La règle, c'est déclarer tout type, structure, etc. AVANT de les utiliser.
Donc, si jeu.h utilise des type définis dans structures.h, il faut l'inclure, il en a besoin pour connaitre les tailles des variables etc.
Il ne faut pas oublier qu'un programme C (enfin, plus précisément une unité de compilation) est séquentiel, même en dehors des fonctions : ce que tu écris dépend de ce qu'il y a avant.
0
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   2
 
oui oui mais...
Même si j'inclu structures.h l'erreur devient du genre:
structures.h:16: erreur: previous declaration of «unJeu» was here
Vous voyez c pas un probleme de declaration ou d'utilisation...
Le problème que j'ai pas trouvé de solution à cette erreur en recherchant dans google, mais je vais continuer à rechercher...

@plus
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Si, l'erreur viens de là !
Mais attention, si tu n'as pas mis de balises de garde dans structures.h, il est possible en effet qu'il râle comme il te le dit.
un fichier .h doit être entouré des balises :
#ifndef BALISE_UNIQUE
#define BALISE_UNIQUE
...
#endif
Ce n'est pas parcequ'il te sort une autre erreur qu'il ne faut pas inclure structures.h dans jeu.h.
0
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   2
 
Salut,
En réalité g commencé ce projet avec devcpp sous window et tout était parfait en compilation et en execution (pas mêmes de "warnings"...)
et quand je me suis rendu compte que je dois programmer sous linux comme on a dit les profs, g passé a linux
A savoir que g remplacé toutes les fonctions et les bibliothèques non portables et me voila...
Programmer sous linux c peut etre plus exigent, non?

Ok ,je vais essayer les balises de garde malgré que g programmé en c sous windows sans les utiliser et toujours ça marche tres bien.
@ plus
0
marven23 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   2
 
Salutation Char Snipeur
Enfin j'arrive :-)
Vraiment les balises de garde ont résolu le problème
Merci infiniment et @plus
0