Partage
  • Partager sur Facebook
  • Partager sur Twitter

Que veut dire cette erreur:

"two or more data types in declaration of 'SDL_main'"

Sujet résolu
    22 mai 2006 à 20:38:04

    Salut, comme mon titre l'indique je voudrais savoir ce que veut dire cette erreur: "two or more data types in declaration of 'SDL_main'"

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2006 à 20:44:16

      euh ça doit donner "il y a 2 ou plus types de données déclaré pour SDL_main".

      montre nous un peu ton code t'a du déclarer 2 fois une fonction ou t'être trompé dans un type
      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2006 à 20:51:39

        Voici mon code:

        main.c
        #include <stdio.h>
        #include <stdlib.h>
        #include <SDL/SDL.h>
        #include <SDL/SDL_image.h>
        #include <SDL/SDL_ttf.h>

        #include "constantes.h"








        int main(int argc, char *argv[])
        {


            //Déclaration des vaiarables

        //Ecran
        SDL_Surface *ecran = NULL;
        //Images
        SDL_Surface *menuPrincipal = NULL, *menuJouer = NULL, *menuEditeur = NULL, *menuChoixType = NULL, *menuInstructions = NULL;
        //Polices
        SDL_Surface *pJouer = NULL, *pScores = NULL, *pEditeur = NULL, *pCharger = NULL, *pInstructions = NULL;
        SDL_Surface *p1Joueur = NULL, *p2Joueurs = NULL, *pDefis = NULL, *pNiveaux = NULL;
        SDL_Surface *pJouerDefis = NULL, *pAventure = NULL, *pVosDefis = NULL, *pVosNiveaux = NULL;
        //Couleurs texte
        SDL_Color noir = {0, 0, 0}, blanc = {255, 255, 255};
        //Position
        SDL_Rect position;
        //Event
        SDL_Event event;
        //Police
        TTF_Font *police = NULL;
        //Positions menus
        SDL_Rect posJouer, posScores, posEditeur, posCharger, posInstructions;
        SDL_Rect pos1Joueur, pos2Joueurs, posDefis, posNiveaux;
        SDL_Rect posJouerDefis, posAventure, posVosDefis, posVosNiveaux;

        //Autres variables
        int continuer = 0, menuActuel = PRINCIPAL;


            //Initialisation de la SDL et de l'écriture
            SDL_Init(SDL_INIT_VIDEO);
            TTF_Init();

            //Mettre une icone au prog
            //SDL_WM_SetIcon("", NULL);
            //Fenetre
            SDL_SetVideoMode(LARGEUR_FENETRE, HAUTEUR_FENETRE, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
            //Titre du prog
            SDL_WM_SetCaption("Mister Ball", NULL);

            //Création de la police
            police = TTF_OpenFont("futur.ttf", 60);
            TTF_SetFontStyle(police, TTF_STYLE_NORMAL);

            //Création des images
            menuPrincipal = IMG_Load("Images/menuPrincipal.jpg");
            menuJouer = IMG_Load("Images/menuJouer.jpg");
            menuEditeur = IMG_Load("Images/menuEditeur.jpg");
            menuChoixType = IMG_Load("Images/menuChoixType.jpg");
            menuInstructions = IMG_Load("Images/menuInstructions.jpg");




            //Position
            position.x = 0;
            position.y = 0;

            //Position des menus
            posJouer.x = ecran->w/4;
            posJouer.y = ecran->h/2;

           

            //Variables de texte

            pJouer = TTF_RenderText_Shaded(police, "Jouer", blanc, noir);
            pScores = TTF_RenderText_Shaded(police, "Scores", blanc, noir);
            pEditeur = TTF_RenderText_Shaded(police, "Editeur", blanc, noir);
            pCharger = TTF_RenderText_Shaded(police, "Charger", blanc, noir);
            pInstructions = TTF_RenderText_Shaded(police, "Insctructions", blanc, noir);
            p1Joueur = TTF_RenderText_Shaded(police, "1 joueur", blanc, noir);
            p2Joueurs = TTF_RenderText_Shaded(police, "2 joueurs", blanc, noir);
            pDefis = TTF_RenderText_Shaded(police, "Defis", blanc, noir);
            pNiveaux = TTF_RenderText_Shaded(police, "Niveau", blanc, noir);
            pJouerDefis = TTF_RenderText_Shaded(police, "Defis", blanc, noir);
            pAventure = TTF_RenderText_Shaded(police, "Aventure", blanc, noir);
            pVosDefis = TTF_RenderText_Shaded(police, "Vos defis", blanc, noir);
            pVosNiveaux = TTF_RenderText_Shaded(police, "Vos niveaux", blanc, noir);


            //Boucle
            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:
                                continuer = 0;
                                break;
                        }
                        break;
                }

                //Fond de l'ecran
                SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));

                //Collage de l'images et du texte
                if (menuActuel == PRINCIPAL)
                {
                    SDL_BlitSurface(menuPrincipal, NULL, ecran, &position);
                }
                else if (menuActuel == JOUER)
                {
                    SDL_BlitSurface(menuJouer, NULL, ecran, &position);
                }
                else if (menuActuel == EDITEUR)
                {
                    SDL_BlitSurface(menuEditeur, NULL, ecran, &position);
                }
                else if (menuActuel == INSTRUCTIONS)
                {
                    SDL_BlitSurface(menuInstructions, NULL, ecran, &position);
                }
                else if (menuActuel == CHOIX_TYPE)
                {
                    SDL_BlitSurface(menuChoixType, NULL, ecran, &position);
                }


                //Mise a jour
                SDL_Flip(ecran);

            }




            //On nettoie les variables
            TTF_CloseFont(police);

            SDL_FreeSurface(menuPrincipal);
            SDL_FreeSurface(menuJouer);
            SDL_FreeSurface(menuEditeur);
            SDL_FreeSurface(menuChoixType);
            SDL_FreeSurface(menuInstructions);
            SDL_FreeSurface(pJouer);
            SDL_FreeSurface(pScores);
            SDL_FreeSurface(pEditeur);
            SDL_FreeSurface(pCharger);
            SDL_FreeSurface(pInstructions);
            SDL_FreeSurface(p1Joueur);
            SDL_FreeSurface(p2Joueurs);
            SDL_FreeSurface(pDefis);
            SDL_FreeSurface(pNiveaux);
            SDL_FreeSurface(pJouerDefis);
            SDL_FreeSurface(pAventure);
            SDL_FreeSurface(pVosDefis);
            SDL_FreeSurface(pVosNiveaux);

            //On quitte les 2
            TTF_Quit();
            SDL_Quit();

            return EXIT_SUCCESS;
        }



        (le code n'est pas encore fini donc ne vous inquietez pas si vous voyez des variables qui ne font rien)

        constantes.h
        #ifndef DEF_CONST
        #define DEF_CONST


        #define TAILLE_BLOC            34
        #define NB_BLOCS_HAUTEUR       20
        #define NB_BLOCS_LARGEUR       20
        #define LARGEUR_FENETRE        NB_BLOCS_LARGEUR * TAILLE_BLOC
        #define HAUTEUR_FENETRE        NB_BLOCS_HAUTEUR * TAILLE_BLOC


        enum { PRINCIPAL, JOUER, EDITEUR, INSTRUCTIONS, CHOIX_TYPE }





        #endif


        Voilà merci d'avance de m'aider

        EDIT
        je viens de relire mon code est j'ai vu que j'avais oublié le point virgule après mon enumération donc maintenant mon prog se lance, mais il y a un probleme (tant qu'on y est^^), c'est qu'il se ferme aussi tot, voyez vous pourquoi?

        merci d'avance
        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2006 à 22:26:47

          Citation : The BasheR

          Salut, comme mon titre l'indique je voudrais savoir ce que veut dire cette erreur: "two or more data types in declaration of 'SDL_main'"

          Merci d'avance


          Manque un ';' quelque part. Si ça ne se voit pas, c'est que c'est dans un .h (la dernière définition)

          ...

          constantes.h

          #ifndef DEF_CONST
          #define DEF_CONST
          <...>
          enum { PRINCIPAL, JOUER, EDITEUR, INSTRUCTIONS, CHOIX_TYPE }

          #endif

          Gagné !

          Citation : The BasheR

          mais il y a un probleme (tant qu'on y est^^), c'est qu'il se ferme aussi tot, voyez vous pourquoi?


          Tu as quel environnement de développement ?
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            23 mai 2006 à 17:35:55

            Citation : -ed-

            Tu as quel environnement de développement ?


            L'environnement c'est l'IDE?
            Si oui j'ai Block::Code

            Je viens de me rendre compte dans mon code que j'avais mis continuer = 0; au lieu de 1 donc je pensais que c'était à cause de àa mais non même pas, mon prog se ferme touours aussi tot

            Quelqu'un saurait pourquoi?

            merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              23 mai 2006 à 18:04:18

              Citation : The BasheR

              Je viens de me rendre compte dans mon code que j'avais mis continuer = 0; au lieu de 1 donc je pensais que c'était à cause de àa mais non même pas, mon prog se ferme touours aussi tot

              Quelqu'un saurait pourquoi?


              Il se peut qu'il y ait un gros bug velu dans ton code qui casse tout...
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                23 mai 2006 à 18:11:03

                lol ouai je crois aussi, mais c'est plutot chiant, j'ai essayé de mettre tout en commentaire (presque tout), pour voir si ça marche quand même, eh bien non toujours pas, et je ne vois vraiment pas pourquoi, pourtant mes images sont bien dans le dossier 'Images/', ma police s'appelle bien comme ça, j'ai bien mis tout les DLL, et j'ai fait les 2 linkers alors je ne vois pas ce qui ne va pas dans ce code.

                Personne ne saurait me le dire?

                Merci d'avance

                -----------------------------------------------
                EDIT
                -----------------------------------------------
                Encore une fois je viens de me rendre compte de mon erreur, j'avais simplement oublié de mettre ecran = SDL_SetVideoMode(<...>);

                Donc voilà, c'est encore une erreur c***e, même pour un débutant :D
                Donc merci quand même de votre aide.
                Le sujet est donc résolu (mais j'aurais surement d'autres problemes plus tard :p )

                ++
                • Partager sur Facebook
                • Partager sur Twitter

                Que veut dire cette erreur:

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown