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

Fermé
Hell_666 Messages postés 44 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 19 mars 2010 - 19 mars 2010 à 20:07
Hell_666 Messages postés 44 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 19 mars 2010 - 19 mars 2010 à 23:38
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
Modifié par fiddy le 19/03/2010 à 23:34
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 jeudi 29 octobre 2009 Statut Membre Dernière intervention 19 mars 2010
Modifié par Hell_666 le 19/03/2010 à 23:37
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
Modifié par fiddy le 19/03/2010 à 23:37
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 jeudi 29 octobre 2009 Statut Membre Dernière intervention 19 mars 2010
19 mars 2010 à 23:38
Voilà c'est ce que tu viens de dire ^^

Merci.
0
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 jeudi 29 octobre 2009 Statut Membre Dernière intervention 19 mars 2010
19 mars 2010 à 23:06
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
19 mars 2010 à 23:23
Non, on n'inclut pas les fichiers sources. C'est une très mauvaise habitude...
0