Globale Variablen in Header-Datei?

Persönliche Seite #568190
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.
#568209
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
*****
1
#include <xyz.h>
2

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

7
static void foo(); // Eine Hilfsfunktion, die nur fuer dieses *.c
8
                   // existiert. Von aussen ist diese Funktion nicht
9
                   // sichtbar und auch nicht aufrufbar. Daraus
10
                   // folgt aber auch, dass ein anderes *.c eine
11
                   // eigene Funktion foo() haben könnte, ohne
12
                   // 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.

Antwort schreiben

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.

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.