2010-02-09 9 views
5

Mögliche Duplizieren:
Static variableZugriff auf eine statische Variable aus einer anderen Datei in C?

Wie eine statische Variable aus einer anderen Datei in C zugreifen? Da eine statische Variable einen Dateibereich hat, denke ich, dass wir außerhalb einer Datei nicht darauf zugreifen können. Aber ich denke immer noch, dass es einen Trick oder einen Weg geben könnte, dasselbe zu tun.

+4

Warum denken Sie, dass Sie das tun möchten? –

+0

Was @Neil sagte, und es ist ein Duplikat: http://StackOverflow.com/Questions/1973162 –

Antwort

3

Verwenden Sie das Schlüsselwort extern in Ihrer Deklaration, um anzugeben, dass die Variable aus einer anderen Datei stammt (externe Verknüpfung). Löschen Sie das statische Schlüsselwort in Ihrer ursprünglichen Definition.

Die externe vs. interne Verknüpfung Sache wird in this article erklärt.

+1

Umm. Was? Eine Variable, die sowohl interne als auch externe Verknüpfungen hat? –

+0

Ich habe den Deklaration vs. Definitionsteil geklärt. – Thorsten79

+0

Jetzt ist Ihre Antwort technisch korrekt, beantwortet aber die Frage leider nicht. Die Frage selbst ist jedoch nicht so gut. –

1

Sie können dies nur indirekt tun, z. Wenn eine Funktion im Bereich der Datei, die die statische Variable enthält, Ihnen einen Zeiger darauf gibt.

5

Ich glaube nicht, dass es einen einfachen Weg gibt. Wenn Sie die Datei mit der statischen Variablen ändern können, können Sie so etwas tun:

static int hiddenVar; // The static var you want to get at 

// A new function you write 
int * getHiddenVar() { 
    return &hiddenVar; 
} 

Aber natürlich, wenn Sie die Datei ändern können, würden Sie nur das Schlüsselwort static fallen.

Auch ich bezweifle, dass das hilft, aber ich musste so etwas tun, wenn ich ein Kernelmodul in FreeBSD schreibe. Ich habe einen Trick benutzt, bei dem ich die Linkerfunktionen des Kernels aufgerufen habe, um die Adresse einer statischen Funktion zu finden. Ich bezweifle jedoch, dass Sie dies in einem normalen C-Programm tun können.

Verwandte Themen