Partage
  • Partager sur Facebook
  • Partager sur Twitter

Variable globale

Sujet résolu
    13 avril 2006 à 19:21:37

    Salut,
    j'utlise des variables gloabes comme dans le cours de Mateo mais sa marche pas

    main.c

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include "affichage.h"



    int continuer = 1; // variable globale

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

        SDL_Surface *ecran;
       
           SDL_Event event;
       
       
        SDL_Init(SDL_INIT_VIDEO);
       
       
       
        ecran = SDL_SetVideoMode(1100, 700, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
       
       
           while (continuer) {
             
                SDL_WaitEvent(&event);
               
               switch (event.type) {
                     
                   
                    case SDL_QUIT :
                    continuer = 0;
                    break;
                   
                    case SDL_KEYDOWN :
                   switch (event.key.keysym.sym)
                                {
                                case SDLK_RIGHT :
                                     affichage(); //la j'utilise la fonction de affichage.c
                                     break;       
                                     }
                    }
                                                         
                    SDL_Flip(ecran);
                     }

       
     SDL_Quit();

       
    return EXIT_SUCCESS;
       
    }
    {



    affichage.h

      void affichage();



    affichage.c

    #include "affichage.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>



    void affichage()
        {
                     

    continuer = 0;

         }



    Il me met que continuer n'est pas déclarer dans affichage.c pourtant continuer et une variable globale déclaré dans main.c
    Je comprends pas mon erreur sinon j'ai essayer de mettre dans la fonction de affichage.c
       
    SDL_Surface *ecran;
     ecran = SDL_SetVideoMode(1100, 700, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);


    Ceci est sa marche donc ce n'est pas du au lien entre .h, .c
    Voila merci d'avance
    ++
    • Partager sur Facebook
    • Partager sur Twitter
      13 avril 2006 à 19:25:45

      Il faut redéfinir la variable dans chaque fichier où elle est utilisée.
      Rajoute ça dans affichage.c
      extern int continuer;
      • Partager sur Facebook
      • Partager sur Twitter
        13 avril 2006 à 19:28:40

        L'utilisation des variables globales n'est pas une bonne idée (en tout cas en C++, disons qu'en C c'est un peu plus courant). Passe plutôt par des paramètres et des retours.
        • Partager sur Facebook
        • Partager sur Twitter
          13 avril 2006 à 19:54:02

          Whoo Merci Araya sa marche génial
          merci, merci
          A++

          Citation : remram44

          L'utilisation des variables globales n'est pas une bonne idée (en tout cas en C++, disons qu'en C c'est un peu plus courant). Passe plutôt par des paramètres et des retours.


          ok , je vais essayer

          Merci à vous 2
          • Partager sur Facebook
          • Partager sur Twitter
            14 avril 2006 à 10:08:58

            Citation : Yruama

            Salut,
            j'utlise des variables gloabes comme dans le cours de Mateo mais sa marche pas


            Les globales, c'est mal...

            Citation : Yruama


            Il me met que continuer n'est pas déclarer dans affichage.c pourtant continuer et une variable globale déclaré dans main.c
            Je comprends pas mon erreur sinon j'ai essayer de mettre dans la fonction de affichage.c


            Dans le .h, il faut déclarer la variable :
            extern int continuer; // variable globale

            http://mapage.noos.fr/emdel/notes.htm#globales

            Mais franchement, c'est pas utile. Il faut travailler par contexte (structure). C'est beaucoup plus clair...

            /* data.h */
            #ifndef H_DATA
            #define H_DATA
            struct data
            {
               int continuer;
            };
            #endif /* guard */


            /* main.c */
            #include "affichage.h"

            int main (void)
            {
               struct data data;

               data.continuer = 1;

               affichage (&data, ...);
            }


            /* affichage.h */
            #ifndef H_AFFICHAGE
            #define H_AFFICHAGE
            #include "data.h"

            void affichage (struct data *p_data, ...);
            #endif /* guard */


            /* affichage.c */
            #include "affichage.h"

            void affichage (struct data *p_data, ...)
            {
            }
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !

            Variable 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