Wie auf statische Variable in Datei zugreifen?

Gast #6021196
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.
Gast
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.
Gast
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.
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!
Gast
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;
Moderator
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.