Ich habe 2 Quelldateien (.c) namens file1.c und file2.c, die zwischen ihnen eine Variable, teilen müssen, so dass, wenn in einer Quelldatei die Variable aktualisiert wurde, dann in der anderen Quelldatei, wenn Sie darauf zugreifen variabel wird die Änderung gesehen.Wie teilt man eine Variable und ihren Wert zwischen vielen Quelldateien in c-Sprache?
was ich tat, ist eine andere Quelldatei erstellen file3.c und Header-Datei mit dem Namen file3.h genannt (was natürlich wird in file1.c file2.c und in file3.c aufgenommen)
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
.
.
.
aber das Problem ist, wenn in file1.c
Update aufgerufen wird und myvariable aktualisiert die Änderung nicht in file2.c
weil in file2.c gesehen werden, wenn get aufgerufen wird und myvariable gedruckt wird, dann wird 0 gedruckt worden ist, nur dann, wenn in file2.c Update wird aufgerufen, dann wird die Änderung gesehen. scheint es, wie die Variable geteilt wird aber für jede Quelldatei gibt es eine andere Variablenwert/verschiedene Speicher für diese Variable
Wie kompilieren Sie diese Dateien, um die ausführbare Datei zu erstellen? – dpp
in file1.c und file2.c deklarieren Sie auch "int myvariable;"? Du solltest nicht. –
Ich kompiliere sie mit einem Makefile, das ich von jemandem gegeben habe und nein, ich deklariere sie nicht in irgendeiner Datei, nur in file3.c und in file3.h, wie ich geschrieben habe. –