Ho 2 file di origine (.c) denominati file1.c e file2.c che devono condividere tra loro una variabile, in modo che se in un file di origine la variabile è stata aggiornata, allora nell'altro file di origine quando si accede a questo variabile il cambiamento sarà visto.come condividere una variabile e il suo valore tra molti file sorgente in linguaggio c?
quello che ho fatto è creare un altro file source chiamato file3.c e intestazione file chiamato file3.h (che, ovviamente, è stato incluso nel file1.c file2.c e in file3.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
.
.
.
ma il problema è quando in file1.c
aggiornamento è invocato e myVariable viene aggiornato il cambiamento non può essere visto in file2.c
perché in file2.c quando ottiene è invocato e myVariable viene stampato quindi 0 è stato stampato, solo se in file2.c l'aggiornamento è invocato, quindi il cambiamento è stato visto. sembra che la variabile è in comune, ma per ogni file sorgente v'è un diverso valore di una variabile/memoria differente per questa variabile
Come si compila questi file per creare l'eseguibile? – dpp
in file1.c e file2.c dichiari anche "int myvariable;"? Non dovresti. –
li compilo con un makefile che mi è stato dato da qualcuno e no non li dichiaro in nessun file, solo in file3.c e in file3.h come ho scritto. –