Hallo, werden globale Variablen, die nur für ein Modul gültig sind, in die Header-Datei oder die .c-Datei des Moduls gesteckt?
"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.
Ah danke. Kannte static bisher nur für lokale Variablen, insofern dass die lokale Variable dann nicht bei jedem Funktionsaufruf neu initialisiert wird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.