Globale Variablen in Header-Datei?

Persönliche Seite
"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.
> 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.

Gast
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

Eine eigene Frage? Dieser Thread ist über 19 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.