Article View: be.comp.programming
Article #8491Re: c / include files
From: Luc Kumps
Date: Fri, 28 Jun 2002 09:22
Date: Fri, 28 Jun 2002 09:22
52 lines
3432 bytes
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-mailReferences:
<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