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

Hell_666 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
Hell_666 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -
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

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Hell_666 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Hell_666 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
Voilà c'est ce que tu viens de dire ^^

Merci.
0
Bilow
 
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
Hell_666 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Non, on n'inclut pas les fichiers sources. C'est une très mauvaise habitude...
0