Palabra clave externa de c ++ y variable global

rol externo: se usa para declarar variables antes, lo que indica que se trata de una declaración en lugar de una definición, la definición específica está en otro archivo.

int a; // Esta es la definición

int a = 1; // Esta es también la definición

extern int a; // Esta es la declaración

extern int a = 1; // Esta es la definición, extern es inútil.

Una variable solo se puede definir una vez y se puede declarar varias veces .

 

¿Qué debo hacer para convertir una variable en una variable global ? Es decir: desea definir una variable global en un archivo y luego ser accesible en otros archivos.

Variables globales: definidas en un archivo, y luego extern declaran esta variable en otro archivo, puede usarse en este archivo.

Por ejemplo:

En test.cpp:

int a = 1;

Hay dos formas de usar la variable a en otros archivos:

(1)

En main.cpp:

inttern externo;

int b = a; // A puede ser usado. Incluir no se usa aquí, pero el compilador sabe encontrar la definición de a en otro archivo.

(2)

En main.cpp:

incluye "test.cpp"

int b = a; // Esto también se puede usar, porque incluir es equivalente a fusionar el archivo de inclusión en este archivo.

Hay un problema con el método 2. Cuando varios archivos desean usar esta variable global a, incluya este archivo varias veces, de modo que a se defina repetidamente varias veces y el compilador informe un error: definición repetida.

 

Generalmente en C ++, las variables y funciones se definen en el archivo cpp (definido en el archivo de encabezado, si se incluye varias veces se definirá repetidamente), y luego las cosas definidas se declaran en el archivo de encabezado del mismo nombre, por lo que cuando se usa este archivo Solo mira el conciso archivo de encabezado.

Entonces, generalmente hay extern int a; en test.h; // extern es una declaración

Luego, en test.cpp, incluya "test.h". De esta manera, la variable a definida en cpp es la declarada en el archivo de encabezado.

Si test.h se incluirá dos veces o más, entonces se debe agregar este externo, de lo contrario, se define, como se menciona en el capítulo inicial.

Cuando desee utilizar la variable global a en otro archivo:

Método uno:

inttern externo;

Método dos:

include "test.h" // Porque hay una int a externa en este archivo de encabezado;

El método dos está más en línea con los hábitos. En general, la programación orientada a objetos de C ++ rara vez tiene variables globales separadas expuestas fuera de la clase, por lo que si hay variables globales, se colocan en un archivo cpp, se definen en este archivo y luego se declaran en el archivo de encabezado del mismo nombre. Para usar estas variables globales, incluya este archivo de encabezado.

 

 

Publicado 59 artículos originales · Me gusta46 · Visitas 30,000+

Supongo que te gusta

Origin blog.csdn.net/sinat_41852207/article/details/104804588
Recomendado
Clasificación