¿Cómo puedo compartir una variable global entre archivos c?
Si defino una variable global en un archivo .c
, ¿cómo puedo usar el valor de la misma variable en otro archivo .c
?
File1.c
#include<stdio.h>
int i=10;
int main()
{
printf("%d",i);
return 0;
}
File2.c
#include<stdio.h>
int main()
{
//some data regarding i
printf("%d",i);
return 0;
}
Cómo puede el segundo archivo usar el valor de i
del primer archivo aquí.
7 answers
Archivo 1:
int x = 50;
Archivo 2:
extern int x;
printf("%d", x);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-22 16:20:04
Use la palabra clave extern
para declarar la variable en el otro archivo .c
. Por ejemplo:
extern int counter;
Significa que el almacenamiento real se encuentra en otro archivo. Se puede utilizar tanto para variables como para prototipos de funciones.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-22 16:22:05
Usando extern <variable type> <variable name>
en un encabezado u otro archivo C.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-22 16:20:24
En el segundo archivo .c
use la palabra clave extern
con el mismo nombre de variable.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-22 16:21:01
Haga lo mismo que hizo en file1.c En file2.c:
#include <stdio.h>
extern int i; /*This declare that i is an int variable which is defined in some other file*/
int main(void)
{
/* your code*/
Si usa int i; en file2.c bajo main () entonces seré tratado como variable automática local no igual a la definida en file1.c
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-22 22:33:17
Use la palabra clave extern en otra.archivo c.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-08 17:13:45
Si desea utilizar la variable global i del archivo 1.c en archivo2.c, a continuación se presentan los puntos a recordar:
- la función principal no debería estar en file2.c
- ahora la variable global i se puede compartir con file2.c de dos maneras:
a) declarando con la palabra clave extern en file2.c i. e extern int i;
b) definiendo la variable i en un archivo de cabecera e incluyendo ese archivo de cabecera en file2.c.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-26 12:48:40