Article View: nl.comp.programmeren
Article #737Re: Opbouw grote programma's via opsplitsing source-files
From: Robrecht Jacques
Date: Sun, 07 Nov 1999 00:00
Date: Sun, 07 Nov 1999 00:00
67 lines
3038 bytes
3038 bytes
In article <38249DCC.ABDE8533@skynet.be>, Bart Vandewoestyne wrote:
>Aangezien ik van plan ben om een grote applicatie te schrijven gebruik
>makend van de GTK bibliotheek in Linux wil ik me toch eerst informeren
>hoe je een groot programma best aanpakt.
>Doe ik het bijvoorbeeld best op volgende manier (voorbeeldsituatie):
>
>In de main.c komt:
>
>#include "sub.h"
>
>int main(void)
>{
> printf("Hoofdfile\n");
> zetboodschap();
>}
>
>Dan maak ik een header file sub.h aan met volgende inhoud:
>
>#include "sub.c"
Jikes! De bedoeling is niet om in een header-file (*.h) c-code (*.c) te
includen. Je voorbeeld zou moeten zijn (bv):
main.c: zoals ie was
sub.h:
void zetboodschap(void);
sub.c:
#include <stdio.h>
void zetboodschap(void) {
printf("Subfile\n");
}
>Nu is mijn vraag ook: stel dat ik bijvoorbeeld gebruik maak van
><stdio.h> en dat ik die header file nodig heb in verschillende .c
>files. Moet ik deze dan in elk van die .c files includen ? Of waar
>include ik ze dan best?
Je kunt een config.h maken en die overal includen, ofwel inderdaad
#include <stdio.h> in elke c-file waar dit nodig is.
>Ik heb het uitgeprobeerd en dit boeltje compileert zonder problemen via:
>
>gcc -o main main.c
gcc -c main.c
gcc -c sub.c
gcc -o main main.o sub.o
(als je de sub.c van hierboven gebruikt)
>Indien mijn programma uit meerdere files bestaat, kan ik dan toch
>compileren met ��n enkele regel in te typen? Kan iemand me dan kort
>uitleggen waarom 'MakeFiles' bestaan? Kan ik inderdaad met die ene
>regel compileren of maak ik best zo'n MakeFile aan?
Makefile. Dit zorgt ervoor dat je inderdaad maar 1 regel moet intikken
(make). Bovendien checkt make zelf welke objectfiles (*.o) moeten
gehercompileerd worden omdat de c-files gewijzigd zijn. Een simpele
Makefile voor een 'groot' project is:
OBJECTS = main.o sub.o
all: main
gcc -o main $(OBJECTS)
main.o: sub.h
Lees de man/infopage van make eens na... Bv staat er een link in hoe
je dependencies op headerfiles automatisch kan laten gebeuren.
Robrecht
Technical Details
Message-ID:
<slrn82b93j.l0e.Robrecht.Jacques@ant.dyndns.org>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<38249DCC.ABDE8533@skynet.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: 100a19,bea50703bd2c4537 X-Google-Attributes: gid100a19,public X-Google-Thread: 107324,bea50703bd2c4537 X-Google-Attributes: gid107324,public X-Google-Thread: fcea4,bea50703bd2c4537 X-Google-Attributes: gidfcea4,public From: Robrecht.Jacques@tvd.be (Robrecht Jacques) Subject: Re: Opbouw grote programma's via opsplitsing source-files Date: 1999/11/07 Message-ID: <slrn82b93j.l0e.Robrecht.Jacques@ant.dyndns.org> X-Deja-AN: 545566862 Content-Transfer-Encoding: 8bit References: <38249DCC.ABDE8533@skynet.be> Content-Type: text/plain; charset=iso-8859-1 X-Complaints-To: abuse@tvd.be X-Trace: news.chello.be 941991025 195.162.216.143 (Sun, 07 Nov 1999 17:10:25 MET) Organization: Chello Usenet Service Mime-Version: 1.0 User-Agent: slrn/0.9.5.7 (UNIX) NNTP-Posting-Date: Sun, 07 Nov 1999 17:10:25 MET Newsgroups: nl.comp.programmeren,be.comp.programming,be.comp.os.linux