Comipaltion????

Bonjour,

J'ai codé un code avec C comme langage mais aprés compilation un mesage d'erreur s'affiche:

155|attention : data definition has no type or storage class|

Bon j'ai pas arrivé à comprendre qu'est ce que ça veut dire

Merci de m'aider .
Configuration: Linux Fedora
Firefox 3.0.11

4 réponses

  1. Main.h , non c'est une faute de frappe quand j'ai fait copier/coller en tout cas merci
    0
    1. Modérateur
      Je ne vais pas pouvoir t'aider plus car je n'ai pas les librairies SDL.
      Cependant je pense que main.c et main.h soient des noms maladroits pour des fichiers, même si ça ne semble pas provoquer d'erreurs.
      0
      1. main.h

        #ifndef DEF_MAIN
        #define DEF_MAIN

        #define TAILLE_CARTE 25
        #define TAILLE_BLOC 20
        #define TAILLE_FENETRE TAILLE_BLOC * TAILLE_CARTE

        //Déplacements

        #define HAUT 0
        #define GAUCHE 1
        #define BAS 2
        #define DROITE 3

        enum { MUR,CAISSE,VIDE,JOUEUR1, JOUEUR2,JOUEUR3,JOUEUR4,JOUEUR5};

        #endif

        ________________________________________________________

        main.c

        #include <stdlib.h>
        #include <stdio.h>
        #include <SDL/SDL.h>

        #include "main.h"
        #include "editeur.h"

        int main(int argc, char *argv[])
        {
        SDL_Surface *ecran = NULL, *menu = NULL;
        SDL_Rect positionMenu;
        SDL_Event event;

        int continuer = 1;

        SDL_Init(SDL_INIT_VIDEO);

        ecran = SDL_SetVideoMode(, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
        SDL_WM_SetCaption("Bombazéro", NULL);
        menu = IMG_Load("bombe.bmp");
        positionMenu.x = 0;
        positionMenu.y = 0;

        while (continuer)
        {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
        case SDL_QUIT:
        continuer = 0;
        break;
        case SDL_KEYDOWN:
        switch(event.key.keysym.sym)
        {
        case SDLK_ESCAPE: // Veut arrêter le jeu
        continuer = 0;
        break;
        case SDLK_KP2: // Demande l'éditeur de niveaux
        editeur(ecran);
        break;
        }
        break;
        }

        // Effacement de l'écran
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
        SDL_Flip(ecran);
        }

        SDL_Quit();

        return EXIT_SUCCESS;
        }
        _____________________________________________________________

        editeur.c

        #include <stdlib.h>
        #include <stdio.h>
        #include <SDL/SDL.h>

        #include "main.h"
        #include "editeur.h"
        #include"fichier.h"

        void editeur(SDL_Surface* ecran)
        {
        SDL_Surface *mur=NULL, *caisse= NULL, *vide=NULL, *joueur1=NULL, *joueur2=NULL, *joueur3=NULL, *joueur4=NULL, *joueur5=NULL;

        SDL_Rect position;
        SDL_Event event;

        int continuer=1, clicGaucheEncours=0, clicDroitEncours=0;
        int objetActuel= MUR, i=0, j=0;
        int carte[TAILLE_CARTE][TAILLE_CARTE] = {{0}};

        // Chargement des objets et du niveau
        mur = SDL_LoadBMP("murs.bmp");
        caisse = SDL_LoadBMP("caisse.bmp");
        vide = SDL_LoadBMP("vide.bmp");
        joueur1=SDL_LoadBMP("moi.bmp");
        joueur2=SDL_LoadBMP("adv1.bmp");
        joueur3=SDL_LoadBMP("adv2.bmp");
        joueur4=SDL_LoadBMP("adv3.BMP");
        joueur5=SDL_LoadBMP("adv4.bmp");

        if (chargerNiveau(carte))
        exit(EXIT_FAILURE);

        //Boucle infine de l'editeur

        while (continuer)
        {
        SDL_WaitEvent(&event);

        switch(event.type)
        {
        case SDL_QUIT:
        continuer = 0;
        break;
        case SDL_MOUSEBUTTONDOWN:
        if (event.button.button== SDL_BUTTON_LEFT)
        {
        //on met l'objet actuellement choisi à l'endroit du clic
        carte[event.button.x / TAILLE_BLOC][event.button.y / TAILLE_BLOC] = objetActuel;
        clicGaucheEncours = 1; // On active un booléen pour retenir qu'un bouton est enfoncé
        }
        else if (event.button.button == SDL_BUTTON_RIGHT) // Le clic droit sert à effacer
        {
        carte[event.button.x / TAILLE_BLOC][event.button.y /TAILLE_BLOC] = VIDE;
        clicDroitEncours = 1;
        }
        break;
        case SDL_MOUSEBUTTONUP: // On désactive le booléen qui disait qu'un bouton était enfoncé
        if (event.button.button == SDL_BUTTON_LEFT)
        clicGaucheEncours= 0;
        else if (event.button.button == SDL_BUTTON_RIGHT)
        clicDroitEncours = 0;
        break;
        case SDL_MOUSEMOTION:
        if (clicGaucheEncours) // Si on déplace la souris et que le bouton gauche de la souris est enfoncé
        {
        carte[event.motion.x / TAILLE_BLOC][event.motion.y / TAILLE_BLOC] = objetActuel;
        }
        else if (clicDroitEncours) // Pareil pour le bouton droit de la souris
        {
        carte[event.motion.x / TAILLE_BLOC][event.motion.y / TAILLE_BLOC] = VIDE;
        }
        break;

        case SDL_KEYDOWN:

        switch (event.key.keysym.sym)

        {
        case SDLK_ESCAPE:
        continuer = 0;
        break;
        case SDLK_s:
        sauvegarderNiveau(carte);
        break;
        case SDLK_c:
        chargerNiveau(carte);
        break;
        case SDLK_KP1:
        objetActuel = MUR;
        break;
        case SDLK_KP2:
        objetActuel = CAISSE;
        break;
        case SDLK_KP3:
        objetActuel = VIDE;
        break;

        default:

        break;

        }
        }
        break;
        }
        // Effacement de l'écran
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

        // Placement des objets à l'écran
        for (i = 0 ; i < TAILLE_CARTE; i++)
        {
        for (j = 0 ; j < TAILLE_CARTE ; j++)
        {
        position.x = i * TAILLE_BLOC;
        position.y = j * TAILLE_BLOC;

        switch(carte[i][j])
        {
        case MUR:
        SDL_BlitSurface(mur, NULL, ecran, &position);
        break;
        case CAISSE:
        SDL_BlitSurface(caisse, NULL, ecran, &position);
        break;
        case VIDE:
        SDL_BlitSurface(vide, NULL, ecran, &position);
        break;

        case JOUEUR1:
        SDL_BlitSurface(joueur1, NULL, ecran, &position);
        break;
        case JOUEUR2:
        SDL_BlitSurface(joueur2, NULL, ecran, &position);
        break;
        case JOUEUR3:
        SDL_BlitSurface(joueur3, NULL, ecran, &position);
        break;
        case JOUEUR4:
        SDL_BlitSurface(joueur4, NULL, ecran, &position);
        break;
        case JOUEUR5:
        SDL_BlitSurface(joueur5, NULL, ecran, &position);
        break;

        }
        }
        }
        // Mise à jour de l'écran
        SDL_Flip(ecran);
        }
        SDL_FreeSurface(mur);
        SDL_FreeSurface(caisse);
        SDL_FreeSurface(vide);
        SDL_FreeSurface(joueur1);
        SDL_FreeSurface(joueur2);
        SDL_FreeSurface(joueur3);
        SDL_FreeSurface(joueur4);
        SDL_FreeSurface(joueur5);
        }

        ___________________________________________________________

        editeur.h

        #ifndef DEF_EDITEUR
        #define DEF_EDITEUR

        void editeur(SDL_Surface* ecran);

        #endif
        ________________________________

        fichier.c

        #include <stdlib.h>
        #include <stdio.h>
        #include <SDL/SDL.h>

        #include "fichier.h"
        #include"main.h"

        int chargerNiveau(int niveau[][TAILLE_CARTE])
        {
        FILE* fichier = NULL;

        char ligneFichier[TAILLE_CARTE * TAILLE_CARTE + 1] = {0};

        int i=0, j=0;

        fichier = fopen("niveau.lvl", "r");

        if (fichier == NULL)
        return 0;

        fgets(ligneFichier, TAILLE_CARTE*TAILLE_CARTE+1, fichier)

        for (i = 0; i< TAILLE_CARTE;i++)
        {
        for(j=0; j<TAILLE_CARTE; j++)
        {
        switch(ligneFichier[(i*TAILLE_CARTE)+j])

        {
        case '0':
        niveau[j][i] = 0;
        break;
        case '1':
        niveau[j][i] = 1;
        break;
        case '2':
        niveau [j][i] = 2;
        break;
        case '3':
        niveau [j][i] = 4;
        break;
        }
        }
        }
        fclose(fichier);
        return 1;
        }

        int sauvegargerNiveau(int niveau[][TAILLE_CARTE])
        {
        FILE* fichier = NULL;

        int i=0, j=0;

        fichier = fopen("niveau.lvl", "w");

        if (fichier == NULL)
        return 0;

        for (i=0; i< TAILLE_CARTE; i++)
        {
        for (j=0; j< TAILLE_CARTE;j++)
        {
        fprint(fichier,"%d", niveau[j][i]);
        }
        }

        fclose(fichier);
        return 1 ;
        }
        ______________________________________
        fichier.h

        #ifndef DEF_FICHIERS
        #define DEF_FICHIERS

        int chargerNiveau(int niveau[][TAILLE_CARTE]);
        int sauvegarderNiveau(int niveau[][TAILLE_CARTE]);

        #endif
        0
        1. Modérateur
          Il est plus facile de t'aider si tu nous donnes le code en question, car il contient probablement une erreur (ou plus)
          0