Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C Preprocessor en macro's

C Preprocessor en macro's

In deze tutorial maak je kennis met c preprocessors en leer je aan de hand van voorbeelden #include, #define en conditionele compilatie te gebruiken.

De C-preprocessor is een macro-preprocessor (waarmee je macro's kunt definiëren) die je programma transformeert voordat het wordt gecompileerd. Deze transformaties kunnen het opnemen van een headerbestand, macro-uitbreidingen enz. zijn.

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

#define PI 3.14

Enkele veelvoorkomende toepassingen van C preprocessor zijn:


Inclusief header-bestanden:#include

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

#include <stdio.h>

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

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

U kunt ook uw eigen header-bestand met functiedeclaratie maken en dit in uw programma opnemen met behulp van deze preprocessor-richtlijn.

#include "my_header.h"

Bezoek deze pagina voor meer informatie over het gebruik van headerbestanden.


Macro's met #define

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

Hier is een voorbeeld.

#define c 299792458  // speed of light

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


Voorbeeld 1:#define preprocessor

#include <stdio.h>
#define PI 3.1415

int 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 zoals macro's

U kunt ook macro's definiëren die op dezelfde manier werken als een functieaanroep. Dit staat bekend als functie-achtige macro's. Bijvoorbeeld,

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

Elke keer dat het programma circleArea(argument) . tegenkomt , het wordt vervangen door (3.1415*(argument)*(argument)) .

Stel dat we 5 als argument hebben doorgegeven, dan breidt het uit als volgt:

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

Voorbeeld 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.


Voorwaardelijke compilatie

In C-programmering kunt u de preprocessor instrueren of u een codeblok moet opnemen of niet. Om dit te doen, kunnen voorwaardelijke richtlijnen worden gebruikt.

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

De if instructie wordt getest tijdens de uitvoeringstijd om te controleren of een codeblok moet worden uitgevoerd of niet, terwijl de conditionals worden gebruikt om een ​​codeblok in uw programma op te nemen (of over te slaan) voordat het wordt uitgevoerd.


Gebruik van voorwaardelijk

  • gebruik verschillende code, afhankelijk van de machine, het besturingssysteem
  • compileer hetzelfde bronbestand in twee verschillende programma's
  • om bepaalde code uit het programma uit te sluiten, maar als referentie voor toekomstig doel te behouden

Hoe voorwaardelijk te gebruiken?

Om voorwaardelijk te gebruiken, #ifdef , #if , #defined , #else en #elif richtlijnen worden gebruikt.


#ifdef-richtlijn

#ifdef MACRO     
   // conditional codes
#endif

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


#if, #elif en #else richtlijn

#if expression
   // conditional codes
#endif

Hier, uitdrukking is een uitdrukking van het type geheel getal (kan gehele getallen, tekens, rekenkundige uitdrukkingen, macro's enzovoort zijn).

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

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

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

U kunt ook geneste voorwaarde toevoegen aan uw #if...#else met behulp van #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 is gedefinieerd of niet. Het wordt vaak gebruikt met #if richtlijn.

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

Vooraf gedefinieerde macro's

Hier zijn enkele vooraf gedefinieerde macro's in C-programmering.

Macro Waarde
__DATE__ Een tekenreeks met de huidige datum
__FILE__ Een tekenreeks die de bestandsnaam bevat
__LINE__ Een geheel getal dat het huidige regelnummer vertegenwoordigt
__STDC__ Als de ANSI-standaard C volgt, is de waarde een geheel getal dat niet nul is
__TIME__ Een tekenreeks die de huidige datum bevat.

Voorbeeld 3:Haal de huidige tijd op met __TIME__

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

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

Uitvoer

Current time: 19:54:39

Aanbevolen metingen

  • Lijnbediening
  • Pragma's
  • Preprocessor-uitvoer
  • Andere richtlijnen

C Taal

  1. R-, L- en C-samenvatting
  2. C#-zoekwoorden en -ID's
  3. C# klasse en object
  4. C# abstracte klasse en methode
  5. C# Gedeeltelijke klasse en gedeeltelijke methode
  6. C# verzegelde klasse en methode
  7. C# Preprocessor-richtlijnen
  8. C Trefwoorden en ID's
  9. C - Constanten en Letters
  10. C - Invoer en uitvoer
  11. C - Preprocessors