mot clé externe c ++ et variables globales

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.

 

 

Publié 59 articles originaux · Likes46 · Visites 30,000+

Je suppose que tu aimes

Origine blog.csdn.net/sinat_41852207/article/details/104804588
conseillé
Classement