"Leif Romme Thomsen" <lrt_news@hotmail.com> skrev i en meddelelse
news:baan87$q8rnl$1@ID-194690.news.dfncis.de...
> Jeg sidder og roder med et mindre program, hvor der i main oprettes en
> struct, som skal bruges i mange af funktionerne i programmet.
> Den bliver sendt med som pointer til mange af funktionerne. Selv en tråd
> skal have mulighed for at ændre på min struct, så den sendes også med
> som en void-pointer til tråden.
> Så det simple program bliver hurtigt mere eller mindre uoverskueligt, da
> struct-variablen bliver sendt med til højre og venstre.
>
At bruge en global variabel i denne situation er en løsning, men virker
umiddelbart grimt og fortæller alle disse mange funktioner for meget om,
hvordan strukturen er implementeret - hvilket er for dyrt, hvis du senere
ændrer denne implementation. Lad os antage, at din struct indeholder
nyttig information, så du f.ex. har
typedef struct UsefulStuff {
/* .... */
} UsefulStuff;
Hvis du brugte C++, ville det bedste være at have et interface, hvor
du kunne skrive i de forskellige properties, og så have en metode
SetA(), SetB(), osv. i den klasse, der huser strukturen.
Som det er, ville jeg faktisk foreslå at lægge din struct som en
static-variabel
i en selvstændig c-fil, men lave et interface til manipulationen af den med
Get og Set-metoder - du skal så blot initialisere struct'en med
Set-metoderne
i begyndelsen af programmet og inkludere den tilhørende h-fil alle de
steder,
hvor du har brug for at modificere struct'en. På denne måde kan du bibeholde
din struct, men helt skjule implementationen af den som static eller global
eller overhovedet som struct bag de metoder, din h-fil tilbyder.
--
FAKLENS NYHEDSTJENESTE:
http://www.faklen.dk/nyheder