Partage
  • Partager sur Facebook
  • Partager sur Twitter

structure globale

c'est possible?

Sujet résolu
    20 août 2006 à 12:24:50

    Bonjour à tous.

    Il est possible de faire une variable globale, mais peut t'on le faire avec une structure?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2006 à 12:43:47

      oui ;)
      bon ca fait un peu court comme post mais qu'est-ce qu'on peut répondre d'autre ? ^^

      edit: je crois ...
      • Partager sur Facebook
      • Partager sur Twitter
        20 août 2006 à 12:46:23

        Bas oui mais ça marche pas... Le problème, je crois, c'est que c'est une structure de type SDL_Rect et que la SDL n'est pas inisialisé aant main... enfin je suis pas sûr.
        • Partager sur Facebook
        • Partager sur Twitter
          20 août 2006 à 12:54:58

          Salut,
          Dans mes souvenirs, pour pouvoir partager avec tous les autres fichiers il suffit de déclarer la structure dans un header. Si pour toi global, c'est dans ce sens, alors oui c'est ca. Ensuite tu déclare ta variable de type struct que tu as défini dans un fichier et en meme temps dans un header.
          Ne met ni static ni extern devant la variable. Il me semble que cela devrait fonctionner.
          • Partager sur Facebook
          • Partager sur Twitter
            20 août 2006 à 12:58:07

            Je crois que ça marche, j'en serait sûr dans quelque minutes, je revien poster dès que j'ai du nouveau. Merci!
            edit:Bas il n'y a plus d'erreur de compilation mais il y a ça:
            .objs\creerMondeCB.o:creerMondeCB.c:(.bss+0x0): multiple definition of `positionMario'
            .objs\collisionMarioCB.o:collisionMarioCB.c:(.bss+0x0): first defined here
            .objs\editeurCB.o:editeurCB.c:(.bss+0x0): multiple definition of `positionMario'
            .objs\collisionMarioCB.o:collisionMarioCB.c:(.bss+0x0): first defined here
            .objs\mainMarioCB.o:mainMarioCB.c:(.bss+0x0): multiple definition of `positionMario'
            .objs\collisionMarioCB.o:collisionMarioCB.c:(.bss+0x0): first defined here
            .objs\bougerMarioCB.o:bougerMarioCB.c:(.bss+0x0): multiple definition of `positionMario'
            .objs\collisionMarioCB.o:collisionMarioCB.c:(.bss+0x0): first defined here


            Je présise que j'ai définis la structure seulement dans un .h (qui est inclu dans tout mais .c) car si je la définis aussi dans main ça ne marche pas non plus (ça fait les même erreur).
            • Partager sur Facebook
            • Partager sur Twitter
              20 août 2006 à 13:12:07

              t'as utilisé des #ifndef #endif ?

              Car visiblement, tes structures sont inclues plusieurs fois
              • Partager sur Facebook
              • Partager sur Twitter
                20 août 2006 à 13:23:27

                Alors déclare la forme de ta structure dans un .h.
                Ensuite tu inclus dans le fichier .c si tu ve utilisé la structure.
                Je pense que ca pourrais marcher, si ca marche pas, je regarderais dans mes sources pour me rappeller comment faire.
                • Partager sur Facebook
                • Partager sur Twitter
                  20 août 2006 à 13:25:38

                  Bas la forme je la conait pas vu que c'est SDL_Rect, j'ai inclu SDL.h dans mon .h mais ça marche pas...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 août 2006 à 13:31:14

                    Ah j'avais pas lu que c'était pour un SDL_Rect.
                    Bon jvais essayer d'expliquer, je n'ai pas tester mais tu me diras :).
                    Tout d'abord on va définir les fichiers:
                    test.c -> la où est la variable de type struct qu'on veut en global
                    test.h -> son header
                    autre.c

                    test.c
                    #include <SDL.h>
                    SDL_Rect toto;
                    ...

                    test.h
                    SDL_Rect toto;
                    ...

                    autre.h
                    #include<SDL.h>
                    #include"test.h"

                    et la tu peux normalement utilisé la variable toto
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 août 2006 à 13:34:11

                      Donc la structure est déclaré 2 fois...

                      edit: Je comprend pas où je dois mêtre SDL_Rect toto; dans test.c.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 août 2006 à 13:36:28

                        Je n'ai pas lu le reste, mais tu peux fonctionner par pointeur : déclaré en global, tu l'alloue quand tu veux avec un malloc, ou un new.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 août 2006 à 15:11:29

                          Heu, tiboun, tu pourais pas metre un peut plus de code s'il te plaît?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 août 2006 à 0:05:49

                            Essaye d'organiser ton code comme suit, tu me diras si ca marche :):
                            test.c

                            #include <sdl.h>

                            SDL_Rect dest;

                            Plein de fonction
                            ....

                            int main(){
                               modif_dest();
                               ...
                            }


                            test.h

                            SDL_Rect dest;


                            autre.c

                            #include <sdl.h>
                            #include "test.h"

                            void modif_rest(){
                               dest.x=0;
                               dest.y=0;
                               dest.h=100;
                               dest.w=100;
                            }


                            Inspire toi de ca et tu me diras si ca a marcher ou pas, sinon, si tu peux me passer les sources, j'essaierais de le modifier pour que cela fonctionne.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 août 2006 à 1:17:21

                              Citation : Torim

                              Bonjour à tous.

                              Il est possible de faire une variable globale, mais peut t'on le faire avec une structure?


                              Oui.

                              Si tu as un probleme, poste ton code...

                              Les messages sont vides, c'est normal ou c'est ma machine ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !
                                21 août 2006 à 11:56:05

                                C'est bon ça marche. Merci à tous.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 août 2006 à 14:09:03

                                  Citation : coyotte49

                                  C'est ta machine. :)


                                  Bizarre, ça remarche...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Music only !

                                  structure globale

                                  × 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