🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #8491

Re: c / include files

#8491
From: Luc Kumps
Date: Fri, 28 Jun 2002 09:22
52 lines
3432 bytes
<Bart.Vanhauwaert@nowhere.be> wrote in message
news:nv2ffa.g7l.ln@ns1.irule.be...
> Luc Kumps <NOkumpsSPAM@pandora.be> wrote:
> > In je .h file gebruik je:
>
> > #ifdef MAIN_PROG
> > #define EXTERN_VAR
> > #else
> > #define EXTERN_VAR extern
> > #endif
>
> > EXTERN_VAR long * plHead;
> > EXTERN_VAR long * plEnd;
>
> > In 1 van je C files gebruik je:
> > #define MAIN_PROG
> > #include xxx.h
>
> > In de andere doe je:
> > #include xxx.h
>
> Deze oplossing, hoewel correct, verwondert mij toch een beetje. Waarom
> los je het met die define MAIN_PROG op? Het lijkt mij eenvoudiger om
> ze in de .h file gewoon extern te declareren en dan te definieren in de
> .c file. Is er een nadeel dat ik niet zie?

Ik zie daar ook geen nadeel in, het is een alternatief. Zoals ik reeds zei
beschouw ik deze manier niet als de 'juiste' maar als 'een' manier ;-)

Ik werk geregeld op deze manier omdat je dan dezelfde .h file kunt gebruiken
in verschillende hoofdprogramma's, zonder dat je telkens in elk
hoofdprogramma weer de variabelen moet gaan defini�ren. In sommige gevallen
heeft het hoofdprogramma nl. geen uitstaans met de variabele, en moet het
zelfs van het bestaan ervan niet expliciet op de hoogte zijn.
Ik heb bv. een .h file die zo'n variabele gebruikt in methodes die "inline"
staan gedeclareerd voor de effici�ntie. Die methodes worden opgeroepen
vanuit verschillende modules, die elk de .h file includen, maar voor wie die
variabele geen enkele betekenis heeft (want die wordt enkel gebruikt
binnenin de .h file). De variabele moet echter ��n keer ergens gedefinieerd
worden. Dus zeg ik in de handleiding van de gebruikers van mijn .h file:
"deze file moet je ��nmaal includen met MAIN_PROG gedefinieerd". Indien ik
dan extra variabelen wil defini�ren, dan komt dat automatisch in orde bij al
de 'gebruikers' van mijn .h file, zonder dat ik hen moet vragen om ergens in
hun code die variabele nog eens te gaan defini�ren. Het volstaat dat ze
alles eens hercompileren... Dit is erg handig wanneer dezelfde .h file in
twintig verschillende 'hoofd'programma's wordt gebruikt...

Ik hoop dat deze wartaal wat duidelijk is. Zoniet, laat iets weten, dan
probeer ik een real-life voorbeeld te verzinnen ;-)

Luc K
Technical Details
Message-ID: <NVVS8.1343$ix.595@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-05!sn-xit-06!supernews.com!mtu.ru!image.surnet.ru!surnet.ru!newsfeed.gamma.ru!Gamma.RU!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
References: <Xns923A912658EDFkeanunoemailcom@195.130.132.65> <UDDS8.271$ix.86@afrodite.telenet-ops.be> <nv2ffa.g7l.ln@ns1.irule.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,8485061e5167c153
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-06-28 02:24:20 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-05!sn-xit-06!supernews.com!mtu.ru!image.surnet.ru!surnet.ru!newsfeed.gamma.ru!Gamma.RU!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail
From: "Luc Kumps" <NOkumpsSPAM@pandora.be>
Newsgroups: be.comp.programming
References: <Xns923A912658EDFkeanunoemailcom@195.130.132.65> <UDDS8.271$ix.86@afrodite.telenet-ops.be> <nv2ffa.g7l.ln@ns1.irule.be>
Subject: Re: c / include files
Lines: 57
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-ID: <NVVS8.1343$ix.595@afrodite.telenet-ops.be>
Date: Fri, 28 Jun 2002 09:22:53 GMT
NNTP-Posting-Host: 213.118.193.249
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1025256173 213.118.193.249 (Fri, 28 Jun 2002 11:22:53 MET DST)
NNTP-Posting-Date: Fri, 28 Jun 2002 11:22:53 MET DST
Organization: Telenet Internet