begin process at 2012 05 30 19:42:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Vriable globale..... ou pas???


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Vriable globale..... ou pas???

vendredi 16 juillet 2004 à 14:49:35 | Vriable globale..... ou pas???

Clonk

Bonjour,
voilà, pour le moment, je usis obligé d'utiliser une variable globale dans mon appli, j'en ai besoin pour garder le chemin de mon exe, je le récupère grâce à argv[0].
Le problème est que j'ai PLEINS d'include, vu que j'ai PLEINS de classes.
Et là ça devient lourd : je veur pouvoir utiliser ma variable globale un peu partout dans mes classes et dans mon main. J'ai donc mis sa définition dans un .h, mais je me retrouve avec des redefinitions de partout...
S'il y a mieux comme solution, ou si il y a moyen d'éviter les redéfinitions, je suis partant!
Merci!
vendredi 16 juillet 2004 à 15:22:40 | Re : Vriable globale..... ou pas???

mickaeliazerty

Le mieux, c'est que tu mettes tes déclarations dans un fichier [file].h et les définitions dans une [file].c/cpp (les 2 fichiers étant inclus dans le projet)


Dans file.h

#ifndef _FILE_H_ /*si symbole _FILE_H_ inconnu par le préprocesseur */

#define _FILE_H_ /*alors, on le définit */

extern int var1; /*on déclare nos variables et constantes*/
extern const char var2;
extern char var3[500];
/*... reste des déclarations ... */

#endif /*Pour signaler au préprocesseur qu'on sort de la condition */


Dans ton file.c, tu mets

/* pas d'include */
int var1 = 42;
const char var2 = 'S';
char var3[500] = "Je ne sais pas trop quoi écrire qui pourra être utile, donc du coup, je vais m\'abstenir de mettre un exemple digne d\'interêt car à cette heure ci, avec la température qu'il règne au bureau (oui, je suis au travail et je m\'ennuie), mon imagination n'est pas suffisante pour que ce qu'il en résulte soit autre chose que la chaine vide";



Dans les fichiers qui utilisent ces variables, tu mets uniquement
#include "file.h"
Le #ifndef destiné au préprocesseur aura l'effet suivant: à la compilation du premier fichier incluant ces variables, le symbole _FILE_H_ n'est pas défini, il est alors défini, et les variables sont déclarées. Lorsque le fichiers sera inclus ailleurs, le symbole _FILE_H_ existe, et les déclarations ne sont pas relues, du coup, pas de déclarations multiples

La compilation du projet associera bien les variables/constantes déclarées dans file.h avec celles de file.cpp, grâce à extern

En tout cas, moi, je fais comme ca...
Il existe peut-etre quelque chose de mieux, mais cette technique ne marche pas mal (à condition de ne pas se gourer dans les include)
vendredi 16 juillet 2004 à 16:05:00 | Re : Vriable globale..... ou pas???

xarier

salut ou met juste un extern personellement je ne utilise pas tout c #def et ca je utilise que les symbole extern

aller seeU
Life is Short
vendredi 16 juillet 2004 à 16:30:16 | Re : Vriable globale..... ou pas???

Clonk

Merci pour vos réponses!

Bon, j'ai capté le concept, mais ça veut toujours pas...
disosn que j'utilise la variabl : char * CWD dans main() et les classes A et B...
j'ai créé un fichier "extern.h" et "extern.cpp", dans extern.h:
extern char * CWD;
et dans extern.cpp:
char * CDW = new char [256];
et apres je met le fichier .h en include dans le fichier ou il y a mon main() ainsi que dans les cpp de mes classes A et B...
en bien j'ai encore redefinition sur A et B... mais pas dans mon main()

Où est l'erreur svp?
vendredi 16 juillet 2004 à 16:50:33 | Re : Vriable globale..... ou pas???

Clonk

Ah j'avais peut être oublié de préciser : ma variable globale sera initialisée dans mon main, je veux récupérer le chemin de mon appli en fait...
ça marche votre technique comme ça???
vendredi 16 juillet 2004 à 16:54:01 | Re : Vriable globale..... ou pas???

xarier

oki
il suffit juste de mettre
le extern dans le fichier que tu veut utiliser directement sans les mettre dans le fichier .h

je crois que j'etait bien clair
Life is Short
vendredi 16 juillet 2004 à 16:57:07 | Re : Vriable globale..... ou pas???

xarier

ex :

dans le fichier main

char *var="salut";

......
......

....


dans un autre fichier tu met

extern char *var;
...
.....


Et voila

Life is Short
vendredi 16 juillet 2004 à 23:07:46 | Re : Vriable globale..... ou pas???

vecchio56

Administrateur CodeS-SourceS
Moi je n'aime pas les extern, alors ce que ferais c'est que je la mettrais en variable statique de l'un de ces classes.


Cette discussion est classée dans : variable, utiliser, globale, vriable, pleins


Répondre à ce message

Sujets en rapport avec ce message

variable globale ou non [ par fcbouan ] quel es la bonne approche , utiliser par exemple une variable globale de buffer gMonbuffer[TAILLE] et l utiliser dans une fonction ( ecriture dans un Variable globale changeant de valeur en C [ par ykdebe ] Voila, je voudrais définir une variable gloabale qui puisse prendre deux valeurs différentes.Je pensais utiliser la commande #define mais apparemment comment déclarer une variable globale [ par lpikachu58 ] J'ai un projet avec beaucoup de boite de dialogue et je voudrais avoir des variables static auxquelles je met des valeurs et dont récupérer les valeur Perte de valeur dans une variable globale [ par icedreamer ] Bonjour,J'ai un problème avec une variable globale...Elle est définie de la manière suivante dans mon main.cchar* mavariable = "";Puis je fais appel à variables globales et DLL [ par cosmobob ] je me pose plusieurs questions :quand on crée une DLL, comment déclarer une variable qui soit globale à toutes les instanciations de la DLL ? (cad si declarer une variable globale [ par EricLeRouge ] J'aimerai savoir comment declarer une varible (par ex un int) en globale dans le cas d'un projet avec plusieurs fichiers. Si je cree un .h ou je decla Pb de variable globale [ par spirit_1999 ] Salut,Je programme avec visual c++ en MFC et g un pb de variable. Je voudrai savoir comment faire pour pouvoir afficher une variable, de type BYTE     Re-utiliser une variable [ par squall51 ] J'essaie de créer un programme.J'ai du le diviser en plusieurs fonction.J'aimerai savoir si il est possible d'utiliser une variable definie dans un fo Comment utiliser le contenu d'une variable comme variable [ par gubule ] j'expose mon probleme, c'est pas simple a expliquer.j'ai une chaine qui contient le nom d'une variable, je veux utiliser ce nom de variable pour en ex Un tableau en variable globale [ par nisaloncaje ] Rebonjour a tous,Je désirerais maintenant que mon tableau qui a pour dimension tab soit accessible à une fonction appelé dans main() :j'ai la syntaxe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales