Basis van programmeren in C
#ifndef SENSOR_H
#define SENSOR_H
typedef struct { int id; int value; } Sensor;
int sensor_read(Sensor *s);
#endifHet headerbestand sensor.h is geschreven zoals hierboven. Wat is het doel van de drie regels #ifndef, #define en #endif?
- AHet resultaat van het compileren van de header in een bestand opslaan, zodat het compileren van andere bronbestanden die dezelfde header gebruiken sneller gaat
- BAlleen bronbestanden die SENSOR_H definiëren, deze header laten gebruiken
- CDe inhoud maar één keer opnemen, ook als dezelfde header meerdere keren in één bronbestand wordt ingevoegd (include), zodat fouten door dubbele definities worden voorkomen
Antwoord en toelichting tonen
Antwoord: C. De inhoud maar één keer opnemen, ook als dezelfde header meerdere keren in één bronbestand wordt ingevoegd (include), zodat fouten door dubbele definities worden voorkomen
Als a.h en b.h allebei sensor.h invoegen en een bronbestand a.h en b.h invoegt, wordt de inhoud van sensor.h twee keer opgenomen. De eerste keer wordt SENSOR_H gedefinieerd, dus de tweede keer is de voorwaarde #ifndef SENSOR_H onwaar en wordt alles tot #endif overgeslagen. Zonder dit mechanisme zou het struct-type Sensor twee keer worden gedefinieerd en een compileerfout geven. Dit idioom heet een include guard, en bij veel compilers kan #pragma once voor hetzelfde doel worden gebruikt.