Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006
-
16 juil. 2004 à 14:49
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
16 juil. 2004 à 23:07
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!
mickaeliazerty
Messages postés10Date d'inscriptionsamedi 5 juin 2004StatutMembreDernière intervention27 juillet 2004 16 juil. 2004 à 15:22
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)
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 16 juil. 2004 à 16:30
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()
Clonk
Messages postés278Date d'inscriptionmardi 22 janvier 2002StatutMembreDernière intervention29 août 2006 16 juil. 2004 à 16:50
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???
Vous n’avez pas trouvé la réponse que vous recherchez ?