Probleme de compilation sous gcc

Résolu
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
Configuration: Linux
Firefox 3.0.11

11 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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;

    }
    1. 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
      1. Contributeur
        Normal, "unJeu" n'est pas défini.
        C'est quoi comme variable ?
        1. 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..."
          1. Contributeur
            ç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.
            1. 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
              1. Contributeur
                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.
                1. 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
                  1. Salutation Char Snipeur
                    Enfin j'arrive :-)
                    Vraiment les balises de garde ont résolu le problème
                    Merci infiniment et @plus