De C preprocessor is een macro preprocessor (staat u toe macro’s te definiëren) die uw programma transformeert alvorens het wordt gecompileerd. Deze transformaties kunnen bestaan uit het invoegen van header-bestanden, macro-uitbreidingen enz.

Alle preprocessing directives beginnen met een #-symbool. Bijvoorbeeld,

#define PI 3.14

Enkele van de veel voorkomende toepassingen van C preprocessor zijn:

Inclusie van header bestanden: #include

De #include preprocessor wordt gebruikt om header bestanden in C programma’s op te nemen. Bijvoorbeeld,

#include <stdio.h>

Hier, stdio.h is een header bestand. De #include preprocessor directive vervangt de bovenstaande regel door de inhoud van stdio.h header file.

Dat is de reden waarom u #include <stdio.h> moet gebruiken voordat u functies als scanf() en printf() kunt gebruiken.

U kunt ook uw eigen header-bestand met functie-declaratie maken en het in uw programma opnemen met behulp van deze preprocessor directive.

#include "my_header.h"

Bezoek deze pagina voor meer informatie over het gebruik van header-bestanden.

Macro’s met behulp van #define

Een macro is een fragment van code dat een naam krijgt. U kunt een macro in C definiëren met behulp van de #define preprocessor directive.

Hier volgt een voorbeeld.

#define c 299792458 // speed of light

Hier, wanneer we c in ons programma gebruiken, wordt het vervangen door 299792458.

Voorbeeld 1: #define preprocessor

#include <stdio.h>#define PI 3.1415int main(){ float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0;}

Functie-achtige Macro’s

Je kunt ook macro’s definiëren die op een vergelijkbare manier werken als een functie-aanroep. Dit staat bekend als functie-achtige macro’s. Bijvoorbeeld,

#define circleArea(r) (3.1415*(r)*(r))

Telkens wanneer het programma circleArea(argument) tegenkomt, wordt het vervangen door (3.1415*(argument)*(argument)).

Voorstel dat we 5 als argument hebben doorgegeven, dan ziet het er als volgt uit:

circleArea(5) expands to (3.1415*5*5)

Exemplaar 2: #define preprocessor gebruiken

#include <stdio.h>#define PI 3.1415#define circleArea(r) (PI*r*r)int main() { float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0;}

Bezoek deze pagina voor meer informatie over macro’s en #define preprocessor.

Conditional Compilation

In C programmeren, kunt u de preprocessor instrueren of een blok code wel of niet moet worden opgenomen. Om dit te doen, kunnen conditionele directieven worden gebruikt.

Het is vergelijkbaar met een if statement met één groot verschil.

Het if statement wordt getest tijdens de uitvoering om te controleren of een blok code moet worden uitgevoerd of niet, terwijl de conditionals worden gebruikt om een blok code in uw programma op te nemen (of over te slaan) voordat het wordt uitgevoerd.

Toepassingen van voorwaardelijk

  • verschillende code gebruiken afhankelijk van de machine, besturingssysteem
  • het zelfde bronbestand in twee verschillende programma’s compileren
  • bepaalde code van het programma uitsluiten maar als referentie voor toekomstige doeleinden bewaren

Hoe voorwaardelijk te gebruiken?

Om voorwaardelijk te gebruiken, worden #ifdef, #if, #defined, #else en #elseif directives gebruikt.

#ifdef Directive

#ifdef MACRO // conditional codes#endif

Hier worden de voorwaardelijke codes alleen in het programma opgenomen als MACRO is gedefinieerd.

#if, #elif en #else Directive

#if expression // conditional codes#endif

Hier is de expressie een expressie van het type integer (kunnen gehele getallen, tekens, rekenkundige expressie, macro’s enzovoorts zijn).

De voorwaardelijke codes worden alleen in het programma opgenomen als de uitdrukking wordt geëvalueerd tot een waarde van niet nul.

De optionele #else directive kan worden gebruikt met #if directive.

#if expression conditional codes if expression is non-zero#else conditional if expression is 0#endif

U kunt ook geneste voorwaardes aan uw #if...#else toevoegen met #elif

#if expression // conditional codes if expression is non-zero#elif expression1 // conditional codes if expression is non-zero#elif expression2 // conditional codes if expression is non-zero#else // conditional if all expressions are 0#endif

#defined

De speciale operator #defined wordt gebruikt om te testen of een bepaalde macro gedefinieerd is of niet. Het wordt vaak gebruikt met #if directive.

#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048 // codes

Predefined Macros

Hier zijn enkele voorgedefinieerde macro’s in C programmeren.

string die de bestandsnaam bevat

Macro Value
__DATE__ Een string die de huidige datum bevat
__FILE__ Een string die de bestandsnaam bevat
__FILE__ Een string die de huidige datum bevat
__LINE__ Een geheel getal dat het huidige regelnummer weergeeft
__STDC__ Als het ANSI standaard C volgt, dan is de waarde een geheel getal zonder nul
__TIME__ Een string die de huidige datum bevat.

Voorbeeld 3: Verkrijg de huidige tijd met behulp van __TIME__

Het volgende programma geeft de huidige tijd weer met behulp van de __TIME__ macro.

#include <stdio.h>int main(){ printf("Current time: %s",__TIME__); }

Uitvoer

Current time: 19:54:39

Aanbevolen lectuur

  • Lijnbesturing
  • Pragma’s
  • Preprocessoruitvoer
  • Andere directieven

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.