Rôle externe: utilisé pour déclarer des variables avant, indiquant qu'il s'agit d'une déclaration plutôt que d'une définition, la définition spécifique se trouve dans un autre fichier.
int a; // Ceci est la définition
int a = 1; // C'est aussi la définition
extern int a; // Ceci est la déclaration
extern int a = 1; // Ceci est la définition, extern est inutile.
Une variable ne peut être définie qu'une seule fois et peut être déclarée plusieurs fois .
Que dois-je faire pour faire d'une variable une variable globale ? C'est-à-dire: vouloir définir une variable globale dans un fichier, puis être accessible dans d'autres fichiers.
Variables globales: définies dans un fichier, puis extern déclarent cette variable dans un autre fichier, elle peut être utilisée dans ce fichier.
Par exemple:
Dans test.cpp:
int a = 1;
Il existe deux façons d'utiliser la variable a dans d'autres fichiers:
(1)
Dans main.cpp:
extern int a;
int b = a; // A peut être utilisé. Inclure n'est pas utilisé ici, mais le compilateur sait trouver la définition d'un dans un autre fichier.
(2)
Dans main.cpp:
inclure «test.cpp»
int b = a; // Ceci peut également être utilisé, car include est équivalent à la fusion du fichier include dans ce fichier.
Il y a un problème avec la méthode 2. Lorsque plusieurs fichiers souhaitent utiliser cette variable globale a, incluez ce fichier plusieurs fois, afin que a soit défini plusieurs fois de façon répétée, et le compilateur signale une erreur: définition répétée.
Généralement en c ++, les variables et les fonctions sont définies dans le fichier cpp (défini dans le fichier d'en-tête, s'il est inclus plusieurs fois sera défini à plusieurs reprises), puis les choses définies sont déclarées dans le fichier d'en-tête avec le même nom Regardez simplement le fichier d'en-tête concis.
Donc, généralement, il y a extern int a; dans test.h; // extern est une instruction
Ensuite, dans test.cpp, incluez "test.h". De cette façon, la variable a définie dans cpp est le a déclaré dans le fichier d'en-tête.
Si test.h sera inclus deux fois ou plus, alors cet extern doit être ajouté, sinon, il est défini, comme mentionné dans le chapitre d'ouverture.
Lorsque vous souhaitez utiliser la variable globale a dans un autre fichier:
Première méthode:
extern int a;
Deuxième méthode:
include "test.h" // Parce qu'il y a extern int a dans ce fichier d'en-tête;
La deuxième méthode est plus conforme aux habitudes. En général, la programmation orientée objet C ++ a rarement des variables globales distinctes exposées en dehors de la classe, donc s'il y a des variables globales, elles sont placées dans un fichier cpp, défini dans ce fichier, puis déclaré dans le fichier d'en-tête du même nom. Pour utiliser ces variables globales, incluez ce fichier d'en-tête.