[C] Variable globale non reconnue dans mes...

Bonjour, je déclare une variable en dehors de toute fonction, elle est donc censé être globale et pouvoir être modifiée dans tous mes fichiers .c de mon projet, or dès que je l'utilise dans un fichier .c différent le compilateur me dit qu'elle n'est pas déclarée ...

Pouvez-vous m'aider s'il vous plait ?
Merci beaucoup.

2 réponses

  1. Contributeur
    Bonjour,
    Les variables globales sont à éviter autant que possible.
    Si néanmoins tu souhaites l'utiliser la meilleure façon est de déclarer ta variable dans un fichier source. Ensuite dans le header associé, tu déclares ta variable en extern. Ainsi t'auras plus qu'à inclure le header dans tous les fichiers source où tu souhaites utiliser la variable globale.
    Google is your friend
    2
    1. Oui, j'ai essayé avec et sans :(

      EDIT : C'est bon ça marche, je n'avais pas redéclaré ma variable avec extern mais directement mis extern à sa 1er déclaration .... Merci
      0
    2. Contributeur
      Attention, j'ai modifié mon message précédent pour donner plus de précision.
      Si tu veux un exemple plus précis, n'hésite pas à demander.
      0
    3. Voilà c'est ce que tu viens de dire ^^

      Merci.
      0
  2. Salut,

    Je pense que ton code ressemble à ça :

    #include <stdio.h>
    #include <stdlib.h>
    #include "fihcier1.c"
    #include "fichier2.c"
    
    int a;
    


    Mais regarde : ta variable est déclarée APRES l'inclusion des fichiers C.
    Ainsi, lors de leur compilation, la variable n'a pas encore été déclarée.

    Comme solution, inclus les bibliothèques de bases qui définissent le type 'int', puis déclare ta variable, enfin inclut tes fichiers C.

    Exemple :

    #include <stdio.h>
    #include <stdlib.h>
    
    int a;
    
    #include "fihcier1.c"
    #include "fichier2.c"
    


    Et après tu écrit le reste du code ( int main() );

    Voilà ;)

    Ca fonctionne maintenant ?
    0
    1. Déjà j'inclus des headers et non des fichiers.c, les fichiers .c sont regroupés à la compilation, j'ai quand même essayer de mettre avant les headers mais bien évidement ca ne marche pas, mais ma variable est dans un fichier à inclure déjà donc ...

      Je vois pas d'où ca vient c'est censé marché :s
      0
    2. Contributeur
      Non, on n'inclut pas les fichiers sources. C'est une très mauvaise habitude...
      0