Partage
  • Partager sur Facebook
  • Partager sur Twitter

invalid application of `sizeof' to incomplete type `jeu.h'

nananèreu !

Sujet résolu
    16 avril 2006 à 20:53:24

    Bon bein bonsoir à tous ...

    J'ai cette charmante erreur (invalid application of `sizeof' to incomplete type `jeu.h' )qui s'affiche lors de la compilation ... la ligne 16 à laquelle se situe l'erreur est la suivante :

    heros = malloc( sizeof(Personnage) );


    Alors donc Personnage est une structure faite par mes soins... et est-ce que le fait que je fasse un tableau dans la structure ( int caracteristiques[NB_CARACTERISTIQUES] ; ) est la cause de mon p'tit problème

    Donc comme tous les problème j'aimerait bien savoir comment le résoudre :)
    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2006 à 20:59:24

      Citation : piclem

      Je suis sous windows, j'aime windows, windows c'est trop bien :magicien:


      Ah ! Provocation là !

      Il nous faudrait un peu plus de code pour pouvoir t'aider, notamment la déclaration de ta structure Personnage avec le typedef.
      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2006 à 21:13:48

        loool je sais je sais

        alors :

        struct Personnage
        {
               
                /* Pour le personnage en tant que joueur */
               
               
                int caracteristiques[NB_CARACTERISTIQUES] ;

                int vitesse ;
               
               
                /* Pour le perso en tant qu'animation */
               
                SDL_Surface *image ;
               
                SDL_Rect source , destination ;
               
                int largeur ;
                int hauteur ;
               
                int nombre_animations ;
                int animation_actuelle ;
               
                int direction ;

        };


        J'ai mis typedef struct Personnage Personnage ; dans jeu.h ... :euh:

        Lorsque jeu (blague) déclare :

        Personnage *heros ;
                heros = malloc( sizeof(Personnage) );
        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2006 à 22:06:04

          Citation : piclem

          loool je sais je sais

          alors :

          struct Personnage
          {
                 
                  /* Pour le personnage en tant que joueur */
                 
                 
                  int caracteristiques[NB_CARACTERISTIQUES] ;

                  int vitesse ;
                 
                 
                  /* Pour le perso en tant qu'animation */
                 
                  SDL_Surface *image ;
                 
                  SDL_Rect source , destination ;
                 
                  int largeur ;
                  int hauteur ;
                 
                  int nombre_animations ;
                  int animation_actuelle ;
                 
                  int direction ;

          };



          J'ai mis typedef struct Personnage Personnage ; dans jeu.h ... :euh:

          Lorsque jeu (blague) déclare :

          Personnage *heros ;
                  heros = malloc( sizeof(Personnage) );

          Visiblement, le sizeof ne voit pas la structure entière, mais sa définiont incomplète...
          Il faut être rigoureux avec les définitions de structures.

          Je conseille la simplicité :

          /* jeu.h */
          #ifndef H_JEU
          #define H_JEU

          #include <SDL/sdl.h>
          #define NB_CARACTERISTIQUES 12 /* ce que tu veux... */

          struct Personnage
          {
             /* Pour le personnage en tant que joueur */
             int caracteristiques[NB_CARACTERISTIQUES] ;
             int vitesse ;
                 
             /* Pour le perso en tant qu'animation */
             SDL_Surface *image ;
             SDL_Rect source , destination ;
             int largeur ;
             int hauteur ;
             int nombre_animations ;
             int animation_actuelle ;
             int direction ;
          };
          #endif /* guard */



          /* jenesaisquoi.c */
          #include "jeu.h"
          #include <stdlib.h>

          <...>
          {
             struct Personnage *heros = malloc (sizeof * heros);

             if (heros != NULL)
             {
          }

          Autre solution avec un typedef :

          /* jeu.h */
          #ifndef H_JEU
          #define H_JEU

          #include <SDL/sdl.h>
          #define NB_CARACTERISTIQUES 12 /* ce que tu veux... */

          typedef struct
          {
             /* Pour le personnage en tant que joueur */
             int caracteristiques[NB_CARACTERISTIQUES] ;
             int vitesse ;
             <...>
          }
          Personnage_s;
          #endif /* guard */



          /* jenesaisquoi.c */
          #include "jeu.h"
          #include <stdlib.h>

          <...>
          {
             Personnage_s *heros = malloc (sizeof * heros);

             if (heros != NULL)
             {
          }



          http://mapage.noos.fr/emdel/notes.htm#malloc
          http://mapage.noos.fr/emdel/codage.htm
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            16 avril 2006 à 22:19:38

            oki oké j'ai déclaré ma structure dans jeu.h et il n'y a apparement plus d'erreur

            merchi

            PS : ya autant de méthode pour déclarer les structures...

            en tout cas merci beaucoup :)
            • Partager sur Facebook
            • Partager sur Twitter
              16 avril 2006 à 22:23:02

              Citation : piclem

              PS : ya autant de méthode pour déclarer les structures...


              o_O Si c'est une question, essaye d'être plus précis.
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !

              invalid application of `sizeof' to incomplete type `jeu.h'

              × 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