Freigabe statischer Variablen in Dateien: Namespace vs Klasse

8

Es gibt viele Fragen über statische vs globale hier, aber ich denke, meine Frage ist ein bisschen anders.

Ich möchte wissen, ob es eine Möglichkeit gibt, eine Variable in einem Namespace über Dateien hinweg zu teilen, wie es statische Variablen in einer Klasse können.

Zum Beispiel habe ich das codiert:

%Vor%

-

%Vor%

-

%Vor%

All das ergab das für Code und Code:

%Vor%

Gibt es wieder eine Möglichkeit, eine Variable, die in einem Namespace über Dateien verteilt ist, wie statische Variablen in einer Klasse zu verwenden? Der Grund, den ich stelle, ist, weil ich dachte, ich wäre in der Lage, mich durch die Benutzung von :: notation vor widersprüchlichen globalen Variablen zu schützen, und fand nur heraus, dass ich es nicht konnte. Und wie jeder selbstscheue Programmierer glaube ich, dass ich es falsch mache.

    
Morpork 10.05.2012, 13:26
quelle

1 Antwort

19

Ja:

%Vor%

Außerhalb von class oder struct hat static eine ganz andere Bedeutung. Es gibt eine symbolische interne Verbindung. Wenn Sie also dieselbe Variable wie static deklarieren, erhalten Sie tatsächlich eine andere Kopie für alle Übersetzungseinheiten, keine eindeutige globale Einheit.

Beachten Sie, dass Sie die Variable einmal initialisieren müssen:

%Vor%     
Luchian Grigore 10.05.2012, 13:29
quelle

Tags und Links