🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #737

Re: Opbouw grote programma's via opsplitsing source-files

#737
From: Robrecht Jacques
Date: Sun, 07 Nov 1999 00:00
67 lines
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-mail
References: <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