Partage
  • Partager sur Facebook
  • Partager sur Twitter

Variables globales

    24 janvier 2006 à 1:55:58

    J'ai un probleme avec les Variables globales
    J'ai declare long resultat = 0; dans un fichier .c et j'ai voulu acceder a cette variable a partir d'un autre fichier .c et le compilateur me dit que la variable est non definie dans le deuxieme fichier .c
    Aidez moi. Merci
    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2006 à 11:47:30

      Si tu veux acceder a une autre variable globale a partir d'un autre fichier tu dois marquer 'extern' devant le nom de la variable, sans initialisation et sans type. ex :
      // Fichier1.c
      int taVar = 7;

      //...

      // Fichier2.c
      extern taVar;
      // Et la variable serat globale au 2 fichier (Mais tu peux mettre 'extern' partout)

      // ...


      Après, il peut y avoir des moyens plus propre que de faire des variables globales (fonction,pointeur,...)
      • Partager sur Facebook
      • Partager sur Twitter
        24 janvier 2006 à 12:11:59

        Effectivement, je te déconseille d'utiliser des variables globales; pourquoi ne pas mettre un pointeur en paramètre de ta fonction ?
        • Partager sur Facebook
        • Partager sur Twitter
          25 janvier 2006 à 10:10:06

          Merci les mecs
          ca marche bien
          je pensais qu'il suffit de declarer une variable juste apres les includes pour qu'elle soit globale (c'est ce que j'ai compri du cours de mateo sur les var glob)
          • Partager sur Facebook
          • Partager sur Twitter
            25 janvier 2006 à 13:17:57

            Je me suis visiblement planté je vérifierai ça
            • Partager sur Facebook
            • Partager sur Twitter

            If you'd like to join us, read "How do we work at OpenClassrooms"! :)

              25 janvier 2006 à 14:26:57

              je pensai que ca va marcher mais non
              Voila le premier fichier pour l'exemple c'est tout :

              //Fichier 1
              #include <stdio.h>
              #include <stdlib.h>
              #include "rectangle.h"

              long resultat = 0; // Déclaration de variable globale
              int main(int argc, char *argv[])
              {
              printf("Le triple de 15 est %ld", resultat);
              system("PAUSE");
              return 0;
              }

              Pour le 2eme fichier :
              long triple(long nombre)
              {
              long resultat = 0;

              resultat = 3 * nombre;
              return resultat;
              }

              Je veux afficher le resultat dans le premier fichier mais il me met 0
              Merci de votre aide
              • Partager sur Facebook
              • Partager sur Twitter
                25 janvier 2006 à 14:44:14

                tu n'a pas appellé la fonction triple, donc la valeur ne risque pas de changer.
                puis une variable globale pour ce que tu en fait, c'est affreux tout pas beau :/
                • Partager sur Facebook
                • Partager sur Twitter
                  25 janvier 2006 à 18:25:10

                  Comme le dis drexil, tu as oublier d'appeler triple().
                  Ensuite, si tu veux modifier une variable globale dans une fonction d'un autre fichier, tu dois aussi utiliser 'extern' :

                  // 1er fichier : main, etc, ...

                  // 2e fichier
                  void triple(long nombre)
                  {
                          extern long resultat;
                          resultat = 3 * nombre;
                  }

                  J'ai mis la fonction en void vu que tu n'a pas besoin de retourner la valeur (ou alors ta variable globale ne sert a rien)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Variables globales

                  × 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