Accueil > Forum > > > > Vriable globale..... ou pas???
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
|
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|