mikrocontroller.net

Forum: Compiler & IDEs Globale Variablen in Header-Datei?


Autor: TechInfo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

werden globale Variablen, die nur für ein Modul gültig sind, in die 
Header-Datei oder die .c-Datei des Moduls gesteckt?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Globale Variablen, die nur für ein Modul gültig sind" - Könnte es sein, 
daß Du Variablen meinst, die allen Funktionen innerhalb eines Moduls 
zugänglich sein sollen, aber Funktionen außerhalb des Modules 
verborgen bleiben sollen?

Das sind keine globalen Variablen, sondern statische Variablen, die 
außerhalb von Funktionen deklariert/definiert werden.

Sie gehören nicht in eine Headerdatei, sondern in die C-Sourcedatei des 
Modules.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das sind keine globalen Variablen, sondern statische Variablen, die
> außerhalb von Funktionen deklariert/definiert werden.
>
> Sie gehören nicht in eine Headerdatei, sondern in die C-Sourcedatei des
> Modules.

Das mag jetzt ev. ein bischen untergegangen sein:
Sie werden als 'static' definiert.
Genauso wie Funktionen, die nur innerhalb dieses Moduls
sichtbar sein sollen.


xyz.c
*****
#include <xyz.h>

static int i;      // dieses i ist nur innerhalb dieser *.c
                   // bekannt. Man kann es auch mit einem 'extern'
                   // nicht von aussen referenzieren

static void foo(); // Eine Hilfsfunktion, die nur fuer dieses *.c
                   // existiert. Von aussen ist diese Funktion nicht
                   // sichtbar und auch nicht aufrufbar. Daraus
                   // folgt aber auch, dass ein anderes *.c eine
                   // eigene Funktion foo() haben könnte, ohne
                   // das es zu Problemen kommt

Halte dich an die einfache Regel:
In das Header File kommt alles, was ein potentieller Aufrufer
wissen muss, um Funktionen aus dem zugehörigen Source Code File
aufrufen zu können. Alles andere, was ausser dem Source
Code File niemanden was angeht, kommt ins Source Code File
und wird so abgeschottet, dass es ausserhalb nicht sichtbar ist.


Autor: TechInfo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah danke.

Kannte static bisher nur für lokale Variablen, insofern dass die lokale 
Variable dann nicht bei jedem Funktionsaufruf neu initialisiert 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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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