tengo 2 archivos fuente (.c) denominados file1.c y file2.c que necesitan compartir entre ellos una variable, de modo que si en un archivo fuente la variable se ha actualizado, en el otro archivo fuente al acceder a este variable el cambio se verá.cómo compartir una variable y su valor entre muchos archivos fuente en lenguaje c?
lo que hice es crear otro archivo fuente llamada Archivo3.c y la cabecera de archivo llamado file3.h (que, por supuesto, se han incluido en Archivo2.c Archivo1.c y en Archivo3.c)
in file3.c:
int myvariable = 0;
void update(){//updating the variable
myvariable++;
}
int get(){//getting the variable
return myvariable;
}
in file3.h:
extern int myvariable;
void update(void);
int get(void);
in file1.c:
.
.
.
printf("myvariable = %d",get());//print 0
update();
printf("myvariable = %d",get());//print 1
.
.
.
in file2.c:
.
.
.
printf("myvariable = %d",get());//print 0 but should print 1
.
.
.
pero el problema es cuando en file1.c
actualización se invoca y se actualiza myvariable el cambio no se puede ver en file2.c
porque en Archivo2.c cuando se invoca get y myvariable se imprime 0 se ha impreso, sólo si en Archivo2.c se invoca la actualización y luego se ve el cambio. parece que se comparte la variable pero para cada archivo fuente no es un valor variable de memoria distinto/diferente para esta variable
¿Cómo compila estos archivos para crear el ejecutable? – dpp
en file1.c y file2.c ¿declaras también "int myvariable;"? Usted no debe. –
compilo con un archivo MAKE que me dio alguien y no, no los declaro en ningún archivo, solo en file3.c y en file3.h mientras escribía. –