Ich habe zwei Quelldateien, die auf eine gemeinsame Variable zugreifen müssen. Was ist der beste Weg, dies zu tun? z.B:
source1.cpp:
int global;
int function();
int main()
{
global=42;
function();
return 0;
}
source2.cpp:
int function()
{
if(global==42)
return 42;
return 0;
}
Sollte die Deklaration der Variablen global statisch oder extern sein oder sollte sie sich in einer Header-Datei befinden, die in beiden Dateien usw. enthalten ist?
function()
ist auch beiden Quellen gemeinsam und benötigt die gleiche Behandlung. In Bezug aufglobal
den "besten Weg" ist das überhaupt nicht zu tun. eetimes.com/discussion/break-point/4025723/A-pox-on-globalsAntworten:
Die globale Variable sollte
extern
in einer Header-Datei deklariert werden, die in beiden Quelldateien enthalten ist, und dann nur in einer dieser Quelldateien definiert werden:extern int global;
#include "common.h" int global; int function(); int main() { global=42; function(); return 0; }
#include "common.h" int function() { if(global==42) return 42; return 0; }
quelle
Sie fügen eine "Header-Datei" hinzu, die die Schnittstelle zum Modul source1.cpp beschreibt:
source1.h
#ifndef SOURCE1_H_ #define SOURCE1_H_ extern int global; #endif
source2.h
#ifndef SOURCE2_H_ #define SOURCE2_H_ int function(); #endif
und fügen Sie in jede Datei eine # include-Anweisung ein, die diese Variable verwendet, und (wichtig), die die Variable definiert.
source1.cpp
#include "source1.h" #include "source2.h" int global; int main() { global=42; function(); return 0; }
source2.cpp
#include "source1.h" #include "source2.h" int function() { if(global==42) return 42; return 0; }
Obwohl dies nicht erforderlich ist, schlage ich den Namen source1.h für die Datei vor, um zu zeigen, dass er die öffentliche Schnittstelle zum Modul source1.cpp beschreibt. Auf die gleiche Weise beschreibt source2.h, was in source2.cpp öffentlich verfügbar ist.
quelle
In einer Datei deklarieren Sie es als in source1.cpp, in der zweiten deklarieren Sie es als
extern int global;
Natürlich möchten Sie dies wirklich nicht tun und sollten wahrscheinlich eine Frage zu dem stellen, was Sie erreichen möchten, damit die Leute hier Ihnen andere Möglichkeiten geben können, dies zu erreichen.
quelle