Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur dés la déclaration des variables

excès de structures ?

    29 juin 2006 à 11:59:52

    Bonjour, j'ai une curieuse erreur dans mon programme.

    J'ai une structure actions de ce type:

    typedef struct ProprieteeActions ProprieteeActions; //propriéte des actions
    struct ProprieteeActions
    {       
            char texte[TAILLE_TEXTE]; //texte a dire
           
            char lien[TAILLE_TEXTE]; //lien
           
            int idCinematique; // Cinematiques
            
            int trajet[TAILLE_TRAJET][2]; // trajet à effectuer
            int repereTrajet[2]; // 0->taille du trajet, 1->position actuelle
    };

    typedef struct Actions Actions; //action réalisable sur la carte
    struct Actions
    {
            int actions[NBR_ACTIONS]; //actions par ordre chronologique
            int chronologie[2]; // 0->nbr max d'actions, 1->actions actuelle
            int repetition; // OUI->l'incrémentation revient à 0 quand actuel == max
           
            ProprieteeActions prop[NBR_ACTIONS]; //propriétées des actions
    };


    et une structure PNJ :

    typedef struct PNJ PNJ; //pnj
    struct PNJ
    {
            int id; //repere le pnj par id
            int nbrPNJ;//nombre de pnj sur la map actuelle
           
            char nom[TAILLE_NOM]; //nom du pnj
           
            Type type; //monture, ...
           
            int effets[NBR_EFFETS]; //relief, texte etc ...
           
            int niveau;
           
            Actions actionsA; //bouton A
            Actions actionsP; //actions automatiques (trajet etc...)
           
            //graphismes
            Graphismes graphismes;
           
            //mouvement
            Mouvement mouvement;
    };


    Ce code fonctionne parfaitement, maintenant si je rajoute une nouvelle variable choix dans ma structure action:

    typedef struct Actions Actions; //action réalisable sur la carte
    struct Actions
    {
            int actions[NBR_ACTIONS]; //actions par ordre chronologique
            int chronologie[2]; // 0->nbr max d'actions, 1->actions actuelle
            int repetition; // OUI->l'incrémentation revient à 0 quand actuel == max
           
            ProprieteeActions prop[NBR_ACTIONS]; //propriétées des actions
            ProprieteeActions choix;
    };


    Eh bien ce code ci va planter, juste avec la déclaration des variables.
    J'ai fait quelques vérifications: dans tout les cas le compilateur s'éxécute sans erreur et lance le programme.
    si j'ai ajouté choix, le programme plante telement brusquement que les fichiers stderr et stdout ne sont même pas fermés (2 fichiers de 0ko...).
    J'ai également remarqué que si je supprimait actionsA ou actionsP dans la structure PNJ, alors l'erreur disparaissait.

    Donc j'aimerais savoir si cela ne serait pas dûe à une surcharge en structures? et si oui, comment y rémédier..
    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2006 à 12:21:45

      Commence par placer tes typedef après la déclaration des structures : si tu les place avant, ca ne sert à rien.

      Ensuite il vaut mieux dissocier les noms des structures de ceux que tu va utiliser avec typedef...


      struct structureMachin
      {
         // ...
      };

      typedef struct structureMachin Machin;


      Sinon il n'y a pas de phénomène de structures trop chargées : tu peux mettre autant de variables que tu veux dedans. Ton erreur doit venir d'ailleurs...
      • Partager sur Facebook
      • Partager sur Twitter
        29 juin 2006 à 12:29:55

        En fait pour les typedef j'ai utilisé le cours de Matéo, et moi ça me parait plus clair dans cet ordre (mais bon ^^).
        Sinon l'erreur vient vraiment de là, j'ai créer un nouveau programme avec seulement la déclaration de ces variables et le seul fait d'ajouter choix fait tout planter.
        • Partager sur Facebook
        • Partager sur Twitter

        Erreur dés la déclaration des variables

        × 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