Designfrage mit static Variablen
- From: Johannes Eble <skywalkerpackage@xxxxxxxxxxx>
- Date: Wed, 25 Jan 2006 12:05:31 +0100
Hallo allerseits,
ich muss eine Software (Sprache ist c) neu designen, bei der bisher
die gesamte Kommunikation der Module ueber Globals lief. Das will ich
aendern.
Es gibt ein Modul terminal.c, seine terminal()-Funktion wird von
main() periodisch aufgerufen. Das Terminal hat innere Zustaende (z.B.
lastMenu, currMenu, currKey usw.), die packe ich jetzt alle in die
Struktur S_MENU_STATE.
Von einem zum anderen Aufruf von terminal() (Aufruf erfolgt von
main()) muss der Zustand erhalten bleiben. Dies wurde ja frueher ueber
Globals erreicht.
Ich koennte jetzt zwar in main() eine globale Variable S_MENU_STATE
menuState definieren, einen Pointer darauf S_MENU_STATE *pMenuState =
&menuState, und diesen Pointer dann in terminal(S_MENU_STATE
*pMenuState) uebergeben.
Ich moechte aber nicht so gerne, dass sich main() um diesen Zustand
von terminal() kuemmert. Ausserdem moechte ich nicht soviele Parameter
uebergeben (SW ist embedded).
Jetzt habe ich folgende Idee: Ich definiere den Zustand in terminal.c
als statische globale Variable (+ einen Zeiger darauf)
// terminal.c
static S_MENU_STATE menuState;
static S_MENU_STATE *pMenuState = &menuState;
Durch das static bleibt doch der Zustand zwischen 2
terminal()-Aufrufen erhalten, oder?
Der Witz ist naemlich, dass terminal() seinerseits auch wieder aus
Unterfunktionen besteht, die den Zustand bekommen/veraendern muessen.
Ist das ein plausibler (der plausible) Weg?
Wie halte ich generell in c (oder einer anderen prozeduralen
Programmiersprache mit Zeigern) den Zustand eines Untermoduls lokal?
Bin da wohl ein wenig von den OOP-Sprachen verwoehnt.
Viele Gruesse
Johannes
.
- Follow-Ups:
- Re: Designfrage mit static Variablen
- From: Hynek Schlawack
- Re: Designfrage mit static Variablen
- From: Claudio Carobolante
- Re: Designfrage mit static Variablen
- From: Rainer Weikusat
- Re: Designfrage mit static Variablen
- From: Ingo Menger
- Re: Designfrage mit static Variablen
- Prev by Date: Re: anfaengerfrage zu pointern
- Next by Date: Re: anfaengerfrage zu pointern
- Previous by thread: Zeiger auf Struktur
- Next by thread: Re: Designfrage mit static Variablen
- Index(es):
Relevant Pages
|