-
Portée des variables
Bonjour à tous !
J'essaye au maximum d'avoir un code modulaire, et j'ai donc mes headers et mes sources.
Mais je ne sais pas s'il est possible qu'une variable déclarée dans un fichier quelconque puisse être accessible dans les autres fichiers.
Par exemple j'ai essayé dans un fichier .cpp de déclarer en dehors de tout bloc un tableau, mais je ne peux pas l'utiliser dans mon main.cpp.
Est ce que je dois faire appel à une fonction pour récupérer chaque variable déclarée dans un autre fichier ? Ou existe t-il une portée "super-globale", utilisable dans tous les fichiers ?
Merci d'avance,
Actuenligne
-
Bonjour,
Le fichier main.cpp doit profiter de la déclaration du tableau préfixé du mot clef "extern".
Cela permettra la compilation de main.cpp.
Le linker se chargera in fine de vérifier que tous les paramètres "extern" dont dépendant les unités de compilation sont bien présents quelque-part.
-
Merci pour ta réponse !
Cependant j'ai toujours une erreur "X was not declared in this scope"...
J'ai pourtant initialisé un tableau dans le fichier Class.cpp avec le préfixe extern :
Code:
int extern tableau[20];
Et quand j'essaye de l'utiliser dans main.cpp :
Code:
cout << tableau[1];
...j'ai l'erreur citée ci-dessus.
EDIT :
J'ai déclaré le tableau dans le fichier Class.h et j'ai l'impression que ça marche déjà mieux... maintenant je n'ai plus d'erreur de variable non déclarée, mais quand je compile mon IDE (Code::Blocks 10.05) me dit :
"It seems that this project has not been built yet.
Do you want to build it now?"
J'ai beau cliquer sur "Ok", il ne se lance pas et m'affiche à chaque fois ce même message... Que dois-je faire ?
-
Salut,
il faut le faire :
extern definition;
donc s'il est definition "int tableau[20];"
il est proprement ecrire
extern int tableau[20];
Bonne chance et bon weekend.
Fredy Kruger
-
Merci Fredy !
Maintenant ça marche : c'était juste un problème de syntaxe.
Bonne journée à tous,
actuenligne