Header- en bronbestanden
Scheid declaraties en code.
Header- en bronbestanden is een gratis C Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C Academy bevat in totaal 4 lessen.
Waarom code over bestanden verdelen?
Naarmate C-programma's groeien, wordt het moeilijk leesbaar en duurt het langer om te compileren als alles in één .c-bestand staat.
Met C kun je een project over meerdere bestanden verdelen: elk bestand behandelt één onderdeel. Dit verbetert de organisatie, maakt hergebruik van code mogelijk en betekent dat je bij een wijziging in één onderdeel niet alles opnieuw hoeft te compileren.
Twee soorten bestanden
Een modulair C-project gebruikt twee bestandstypen.
Bronbestanden (.c) bevatten de daadwerkelijke implementatie: functieblokken en definities.
Koptekstbestanden (.h) bevatten declaraties: functieprototypes, typedefinities en macro's die andere bestanden moeten kennen.
Een koptekstbestand
Een koptekst declareert wat er bestaat zonder te zeggen hoe het werkt.
Hier declareert math_utils.h een add-functie. Elk bestand dat deze koptekst insluit, leert de signatuur van de functie kennen en kan deze aanroepen.
/* math_utils.h */
int add(int a, int b);Het bijbehorende bronbestand
Het bronbestand levert de implementatie. Het sluit zijn eigen koptekst in, zodat de compiler kan controleren of de definitie overeenkomt met de declaratie.
Let op dat de koptekst tussen aanhalingstekens wordt ingesloten; dit wordt gebruikt voor bestanden van je eigen project.
/* math_utils.c */
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}De module gebruiken
Nu sluit main.c de koptekst in en roept deze add aan. Het ziet nooit het functieblok, alleen het prototype.
De compiler vertrouwt op de declaratie; de linker koppelt de aanroep later aan de echte implementatie in math_utils.c.
/* main.c */
#include <stdio.h>
#include "math_utils.h"
int main(void) {
printf("%d\n", add(2, 3));
return 0;
}Aanhalingstekens versus punthaken
De #include-instructie heeft twee vormen.
#include <stdio.h> gebruikt punthaken voor kopteksten van het systeem en de standaardbibliotheek. De compiler doorzoekt zijn standaardpaden voor insluitbestanden.
#include "math_utils.h" gebruikt aanhalingstekens voor je eigen kopteksten; eerst wordt gezocht in de huidige map.
#include <stdio.h> /* standard library */
#include "math_utils.h" /* your project */Wat hoort in een koptekst?
Plaats declaraties in kopteksten, geen definities.
Goede inhoud voor een koptekst: functieprototypes, declaraties van struct en typedef, #define-macro's en declaraties van extern-variabelen.
Vermijd functieblokken of variabeledefinities daarin, omdat die fouten met dubbele symbolen kunnen veroorzaken.
/* shapes.h */
typedef struct {
double width;
double height;
} Rect;
double rect_area(Rect r);Wat hoort in een bronbestand?
Het bronbestand bevat het echte werk: functiedefinities en de private hulpfuncties van het bestand.
Het sluit de bijbehorende koptekst in, zodat de compiler controleert of de signaturen overeenkomen. Zo worden afwijkingen vroeg ontdekt in plaats van tijdens het linken.
/* shapes.c */
#include "shapes.h"
double rect_area(Rect r) {
return r.width * r.height;
}Declaratie versus definitie
Dit onderscheid is essentieel voor modulair C.
Een declaratie vertelt de compiler het type en de signatuur van een naam, zodat deze kan worden gebruikt: int add(int, int);
Een definitie maakt de daadwerkelijke entiteit aan, reserveert opslagruimte of levert het functieblok. Kopteksten declareren; bronbestanden definiëren.
int add(int a, int b); /* declaration */
int add(int a, int b) { /* definition */
return a + b;
}Naamgevingsconventies
Een veelgebruikt patroon koppelt elke module op naam: logger.h met logger.c, parser.h met parser.c.
Zo is meteen duidelijk waar een implementatie staat. Groepeer verwante functies in één module, zodat elk bestand één duidelijke verantwoordelijkheid heeft.
/* logger.h */
void log_info(const char *msg);
void log_error(const char *msg);Het bouwproces in beeld
Elk .c-bestand wordt onafhankelijk gecompileerd tot een objectbestand; vervolgens worden alle objectbestanden aan elkaar gelinkt tot één programma.
Kopteksten worden niet zelfstandig gecompileerd; ze worden als tekst ingevoegd in de bronbestanden die ze insluiten. In een latere les bekijken we de volledige bouwstroom.
gcc -c main.c /* -> main.o */
gcc -c math_utils.c /* -> math_utils.o */
gcc main.o math_utils.o -o appKorte controle
Test of je de rollen van koptekst- en bronbestanden begrijpt.
Samenvatting
Je hebt geleerd een C-project op te delen in .h-koptekstbestanden en .c-bronbestanden.
Kopteksten declareren wat er bestaat; bronbestanden definiëren hoe het werkt. Gebruik aanhalingstekens voor je eigen kopteksten en punthaken voor standaardkopteksten.
Vervolgens voorkomen we problemen die ontstaan wanneer een koptekst meer dan één keer wordt ingesloten.
Leer C met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 39
- Lessen
- 144
Veelgestelde vragen
Is de les “Header- en bronbestanden” gratis?
Ja — de volledige tekst van “Header- en bronbestanden” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C Academy bevat in totaal 4 lessen.
Wat leer ik in “Header- en bronbestanden”?
Scheid declaraties en code. Je oefent met C Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C Academy te beginnen?
Ervaring vooraf is niet nodig. C Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Header- en bronbestanden”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C Academy?
Ja. Elke les over C Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Header- en bronbestanden
- Include-guards
- extern en linkage
- Meerdere bestanden compileren