mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Felix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
if(getModus() > ON){...}

int getModous(void)
{
  return gModus;
}
oder
if(gModus > ON){...}

gModus ist die variable in file1.c.

Autor: DPA (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: DanVet (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver S. (oliverso)
Datum:

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

Du unterschätzt moderne Compiler...

Oliver

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: A. S. (achs)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.