Partage
  • Partager sur Facebook
  • Partager sur Twitter

error: expected '=', ',', ';', 'asm' or '__attribute__' befo

Sujet résolu
    26 mars 2012 à 19:30:05

    Bonjour,
    J'essaie de compiler un programme en SDL et le compilateur me renvoie ces erreurs :

    Citation : Compilateur

    In function 'LoadBlit_Texte':
    - 17 error : expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
    - 32 error : expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
    - 65 error : expected '{' at end of input.



    Le Code :
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    #include <string.h>
    
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <SDL/SDL_ttf.h>
    #include <SDL_mixer.h>
    
    #include "....h"
    #include "....h"
    #include "....h"
    #include "....h"
    
    void LoadBlit_Image(SDL_Surface *ecran, SDL_Surface *Image, char *chemin[], int posx, int posy)
    {
        Image = IMG_Load(chemin);
        if (Image == NULL)
         {
             fprintf(stderr, "Chargement impossible de %s : %s\n", chemin, SDL_GetError());
             exit(EXIT_FAILURE);
         }
        SDL_Rect Position;
        Position.x = posx;
        Position.y = posy;
        SDL_BlitSurface(Image, NULL, ecran, &Position);
    }
    
    
    void LoadBlit_Texte(SDL_Surface *ecran, SDL_Surface *Image, char *chemin[],char *Texte[], int taille, int posx, int posy, int R, int V, int B, int Gras, int Italique, int Souligne)
    {   TTF_Font *Police = NULL;
        Police = TTF_OpenFont(chemin, 65);
    
        if (Police = NULL;)
        {
            fprintf(stderr, "Chargement impossible de %s : %s\n", chemin, SDL_GetError());
        }
    
        if (Gras = 1 && Italique = 1 && Souligne = 1)  //G, I, S  //G = Gras
           TTF_SetFontStyle(Police, TTF_STYLE_BOLD | TTF_STYLE_ITALIC | TTF_STYLE_UNDERLINE);
        if (Gras = 1 && Italique = 0 && Souligne = 0)  //G        //I = Italique
           TTF_SetFontStyle(Police, TTF_STYLE_BOLD);
        if (Gras = 0 && Italique = 1 && Souligne = 0)  //I        //S = Souligné
           TTF_SetFontStyle(Police, TTF_STYLE_ITALIC);
        if (Gras = 0 && Italique = 0 && Souligne = 1)  //S
           TTF_SetFontStyle(Police, TTF_STYLE_UNDERLINE);
        if (Gras = 1 && Italique = 1 && Souligne = 0)  //G, I
           TTF_SetFontStyle(Police, TTF_STYLE_BOLD | TTF_STYLE_ITALIC);
        if (Gras = 1 && Italique = 0 && Souligne = 1)  //G, S
           TTF_SetFontStyle(Police, TTF_STYLE_BOLD | TTF_STYLE_UNDERLINE);
        if (Gras = 0 && Italique = 1 && Souligne = 1)  //I, S
           TTF_SetFontStyle(Police, TTF_STYLE_ITALIC | TTF_STYLE_UNDERLINE);
    
        SDL_Color Couleur = {R, V, B};
    
        Image = TTF_RenderText_Blended(Police, Texte, Couleur);
    
        SDL_Rect position;
        position.x = posx;
        position.y = posy;
    
        SDL_BlitSurface(Image, NULL, ecran, &position);
        TTF_CloseFont(Police);
        }
    


    Merci à tous ceux qui pourront m'aider.
    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2012 à 19:32:45

      Tu as un ';' après NULL :
      if (Police = NULL;)
      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2012 à 19:33:35

        Balises code stp.

        Sinon, moi j'ai d'autres erreurs, et en pagaille. (et sans flag supplémentaire).

        main.c: In function ‘LoadBlit_Image’:
        main.c:12: warning: passing argument 1 of ‘IMG_Load’ from incompatible pointer type
        /usr/include/SDL/SDL_image.h:85: note: expected ‘const char *’ but argument is of type ‘char **’
        main.c:15: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char **’
        main.c: In function ‘LoadBlit_Texte’:
        main.c:27: warning: passing argument 1 of ‘TTF_OpenFont’ from incompatible pointer type
        /usr/include/SDL/SDL_ttf.h:89: note: expected ‘const char *’ but argument is of type ‘char **’
        main.c:29: error: expected ‘)’ before ‘;’ token
        main.c:31: warning: format ‘%s’ expects type ‘char *’, but argument 3 has type ‘char **’
        main.c:34: error: lvalue required as left operand of assignment
        main.c:36: error: lvalue required as left operand of assignment
        main.c:38: error: lvalue required as left operand of assignment
        main.c:40: error: lvalue required as left operand of assignment
        main.c:42: error: lvalue required as left operand of assignment
        main.c:44: error: lvalue required as left operand of assignment
        main.c:46: error: lvalue required as left operand of assignment
        main.c:51: warning: passing argument 2 of ‘TTF_RenderText_Blended’ from incompatible pointer type
        /usr/include/SDL/SDL_ttf.h:191: note: expected ‘const char *’ but argument is of type ‘char **’
        • Partager sur Facebook
        • Partager sur Twitter
        Staff désormais retraité.
          26 mars 2012 à 19:39:35

          if (Police = NULL)

          Affectera NULL à Police et ne rentrera pas dans le if (sauf si NULL à été défini différent de 0 ^^")

          Sinon, ces erreurs sont faciles à lire ^^"
          • Partager sur Facebook
          • Partager sur Twitter
          perror(const char * str); will save your life !
            26 mars 2012 à 20:23:01

            Hélas, toujours pareil, code :

            #include <stdlib.h>
            #include <stdio.h>
            #include <time.h>
            #include <string.h>
            
            #include <SDL/SDL.h>
            #include <SDL/SDL_image.h>
            #include <SDL/SDL_ttf.h>
            #include <SDL_mixer.h>
            
            #include ".....h"
            #include ".....h"
            #include ".....h"
            #include ".....h"
            
            void LoadBlit_Image(SDL_Surface *ecran, SDL_Surface *Image, char *chemin[], int posx, int posy)
            {
                Image = IMG_Load(chemin);
                if (Image == NULL)
                 {
                     fprintf(stderr, "Chargement impossible de %s : %s\n", chemin, SDL_GetError());
                     exit(EXIT_FAILURE);
                 }
                SDL_Rect Position;
                Position.x = posx;
                Position.y = posy;
                SDL_BlitSurface(Image, NULL, ecran, &Position);
            }
            
            
            void LoadBlit_Texte(SDL_Surface *ecran, SDL_Surface *Image, char *chemin[],char *Texte[], int taille, int posx, int posy, int R, int V, int B, int Gras, int Italique, int Souligne)
            {   TTF_Font *Police = NULL;
                Police = TTF_OpenFont(chemin, 65);
            
                if (Police == NULL)
                {
                    fprintf(stderr, "Chargement impossible de %s : %s\n", chemin, SDL_GetError());
                }
            
                if (Gras = 1 && Italique = 1 && Souligne = 1)  //G, I, S  //G = Gras
                   TTF_SetFontStyle(Police, TTF_STYLE_BOLD | TTF_STYLE_ITALIC | TTF_STYLE_UNDERLINE);
                if (Gras = 1 && Italique = 0 && Souligne = 0)  //G        //I = Italique
                   TTF_SetFontStyle(Police, TTF_STYLE_BOLD);
                if (Gras = 0 && Italique = 1 && Souligne = 0)  //I        //S = Souligné
                   TTF_SetFontStyle(Police, TTF_STYLE_ITALIC);
                if (Gras = 0 && Italique = 0 && Souligne = 1)  //S
                   TTF_SetFontStyle(Police, TTF_STYLE_UNDERLINE);
                if (Gras = 1 && Italique = 1 && Souligne = 0)  //G, I
                   TTF_SetFontStyle(Police, TTF_STYLE_BOLD | TTF_STYLE_ITALIC);
                if (Gras = 1 && Italique = 0 && Souligne = 1)  //G, S
                   TTF_SetFontStyle(Police, TTF_STYLE_BOLD | TTF_STYLE_UNDERLINE);
                if (Gras = 0 && Italique = 1 && Souligne = 1)  //I, S
                   TTF_SetFontStyle(Police, TTF_STYLE_ITALIC | TTF_STYLE_UNDERLINE);
            
                SDL_Color Couleur = {R, V, B};
            
                Image = TTF_RenderText_Blended(Police, Texte, Couleur);
            
                SDL_Rect position;
                position.x = posx;
                position.y = posy;
            
                SDL_BlitSurface(Image, NULL, ecran, &position);
                TTF_CloseFont(Police);
                }
            


            Merci quand même.
            • Partager sur Facebook
            • Partager sur Twitter
              26 mars 2012 à 20:35:43

              #include ".....h"
              c'est normal?

              change tes "char *chemin[]" en "char *chemin" pareil pour "char *Texte[]"
              • Partager sur Facebook
              • Partager sur Twitter
              ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
                26 mars 2012 à 20:50:10

                Toujours pareil.
                Pour les include ".....h", c'est juste pour masquer les noms de mes fichiers.
                • Partager sur Facebook
                • Partager sur Twitter
                  26 mars 2012 à 21:28:14

                  Manquerait pas un ; dans tes headers
                  • Partager sur Facebook
                  • Partager sur Twitter
                  perror(const char * str); will save your life !
                    27 mars 2012 à 16:44:40

                    Merci pour tout.

                    Au début, la fonction renvoyait un int, puis je l'ai mise en void car elle n'a pas besoin de renvoyer quelquechose. J'ai oublié de changer le prototype et j'ai surtout oublié le ; à la fin du prototype. Enfin, dans la série de If, il y a 1 seule fois = (...&& gras =1 &&...) alors qu'il le faut 2 fois.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 mars 2012 à 16:54:30

                      de rien
                      ==> Penses à mettre résolu :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                      perror(const char * str); will save your life !

                      error: expected '=', ',', ';', 'asm' or '__attribute__' befo

                      × 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