Bibliotheken

Een programma kan opgesplitst worden in meerdere "bibliotheken", ook wel "libraries" of "header-files" of "headers" genoemd. Conventies i.v.m. #include:
  • Standaard-bibliotheken tussen < en > en zonder extensie .h.
  • Oudere C-bibliotheken ook zonder .h en met voorvoegsel c.
  • "Eigen" bibliotheken tussen dubbele aanhalingstekens en met extensie .h (van "header"). Bij conventie met kleine letters.
    Voorbeeld:
    	#include <iostream>
    	#include <ctime> // vroeger <time.h>
    
    	#include "util.h"
    	#include "test.h"
    

    De geïncludeerde headers komen letterlijk in de programmatekst terecht. De volgorde van includeren is dus van belang! Opm. het is aan te raden standaard-bibliotheken eerst te includeren, dus voor eigen bibliotheken.

    Headers kunnen op hun beurt andere headers includeren. Wie zo'n header includeerd krijgt automatisch alle onrechtstreeks geincludeerde definities "op zijn bord" (zie namespace pollution). Indien je bv. <iostream> includeert, is het typisch zo dat onrechtstreeks <cstdlib> en <string> worden geincludeerd. Spijtig genoeg is dit afhankelijk van omgeving tot omgeving (er zijn bv. verschillen tussen gdb en Visual Studio). Het is aangewezen elke header die je effectief gebruikt expliciet te includeren, dus ook bv. <string>.

    In een project worden bepaalde headers in meerdere bestanden geincludeerd. Nochtans is het verboden om een klasse tweemaal te definiëren. Om dit te vermijden gebruikt met "guards":

    #ifndef MIJN_UNIEKE_NAAM
    #define MIJN_UNIEKE_NAAM
    	// ... inhoud hier
    #endif
    
    Als unieke naam kiest men vaak de naam van de header met wat underscores, bv. __UTIL_H__

    Bij het compileren worden de headerbestanden opgezocht:

  • standaard-bibliotheken in include-map (of submappen) van de compiler (bv. c:\Dev-Cpp\include
  • eigen bibliotheken in de map van waaruit gecompileerd wordt (.), of in andere mappen naar keuze. Je kunt de compiler hiervan op de hoogte brengen d.m.v. de command-line parameter -I. In de meeste IDE's kun je dit echter makkelijker via project-opties.
    In NetBeans: rechtsklikken op project, dan bij Properties / Build / C++ Compiler / include directories / ... en dan de map(pen) de headers staan toevoegen.

    Meer uitleg vind je in dit artikel over separate compilation en namespaces.