Forum: PC-Programmierung Wie auf statische Variable in Datei zugreifen?


von Felix (Gast)


Lesenswert?

Hallo,

ich habe mal eine Frage wie mann/ihr etwas macht.
Ich habe file1.h, file1.c, file2.h, file2.c

in file1.c gibt es eine statische variable, welche aber auch in file2.c 
benötigt wird. Dazu habe ich in file1.c eine getter-Funktion gemacht, 
welche aus file2.c aufgerufen wird.
In file1.h sind nur Funktionen Deklariert. Variablen dürfen dort nicht 
rein.

Wie würdet/macht ihr in file1.c auf die Variable zugreifen? Auch durch 
die getter-Funktion? Oder die Variable direkt?
1
if(getModus() > ON){...}
2
3
int getModous(void)
4
{
5
  return gModus;
6
}
oder
1
if(gModus > ON){...}

gModus ist die variable in file1.c.

von DPA (Gast)


Lesenswert?

Ich würde das direkt machen. Manchmal kann man sowas aber als parameter 
eventuell auch in einem struct verpackt übergeben, die variante 
bevorzuge ich meistens. Wenn amn aber nicht von anfang an damit anfängt, 
ist sowas später schwer umzubauen.

von DanVet (Gast)


Lesenswert?

Die Getter-Funktion ist schon der richtige Weg. Ist aber ein 
Funktionsaufruf und erzeugt Overhead.
Oftmals gibt es aber auch die Möglichkeit Funktionen als "inline" zu 
deklarieren, dann kommt das in dem Fall im Maschinenprogramm einem 
direkten Variablenzugriff gleich.

Alternativ kannst du natürlich in file1.h ein "extern gModus   " 
deklarieren, dann kannst du direkt auf die Variable zugreifen.

von Oliver S. (oliverso)


Lesenswert?

DanVet schrieb:
> Die Getter-Funktion ist schon der richtige Weg. Ist aber ein
> Funktionsaufruf und erzeugt Overhead.

Du unterschätzt moderne Compiler...

Oliver

von Bernd K. (prof7bit)


Lesenswert?

DanVet schrieb:
> Die Getter-Funktion ist schon der richtige Weg. Ist aber ein
> Funktionsaufruf und erzeugt Overhead.

Nein, so simple Getter und Setter (und noch viel mehr, und selbst über 
mehrere Ebenen und Dateien hinweg) eliminiert spätestens die LTO radikal 
und gründlich. Probiers aus, wirst staunen!

von A. S. (Gast)


Lesenswert?

Getter ist netter. Wenn es einen Grund gibt, außerhalb getter zu nehmen, 
dann innerhalb auch. Nur nicht übertreiben: wenn im scope auch die 
Variable benutzt wird, dann nicht mixen, so z.b. if get()>10 g=0;

von Yalu X. (yalu) (Moderator)


Lesenswert?

Felix schrieb:
> Wie würdet/macht ihr in file1.c auf die Variable zugreifen? Auch durch
> die getter-Funktion? Oder die Variable direkt?

Was ist der Grund dafür, dass du die Getter-Funktion eingeführt hast?
Davon würde ich es abhängig machen, wie auf die Variable zugegriffen
wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.