Introduktion til præprocessordirektiver i C

Oftest er det lavet som en misforståelse, at forprocessorer eller makroer er en del af udarbejdelsen af ​​programmet, men det er helt forkert. Præprocessor-direktiver er typen af ​​makroer og en fase inden kompilering finder sted. Det kan siges, at dette er et sæt sæt instruktioner, der er givet til kompilatoren til at udføre faktisk sammenstilling. De er også kendt som længere konstruktionsforkortelser for makroer, hvilket betyder, at værdien i makroer erstattes med kodesegmentet. Makro er defineret af et specielt symbol og har et symbol, der starter med "#". Derfor er disse # definere en slags specialforarbejdning efterfulgt af den aktuelle kompilator. I dette emne skal vi lære om præprocessordirektiver i C.

Forarbejdningsvirksomheden har en særlig type repræsentation for dens identifikation, ligesom ethvert forarbejdningsdirektiv initierer sig selv med et specielt symbol på “#” efterfulgt af en identifikator og derefter direktivets navn. Hvidafstand er også tilladt før og efter #. For eksempel inkluderer #.

Der er visse pas eller faciliteter, som en C-forprocessor kan tilbyde:

  • Header-filer: Inkludering af header-filer er en måde, hvorpå erklæringer kan erstattes af programsyntaks og programdel.
  • Udvidelse af makro: Definition af makroer er som at forkorte et stykke kode, som en C-forarbejder erstatter makroerne med deres respektive definition igennem.
  • Kompilering efter betingelser: I henhold til forskellige scenarier eller forskellige betingelser er inkludering af visse dele af programmet mulig ved betinget udarbejdelse.
  • Linjekontrol: Hvis du bruger et program til at kombinere eller omarrangere en eller flere kildefiler til en mellemfil til kompilering, kan du bruge linjekontrol til at informere kompilatoren om, hvor hver kildelinje stammer fra.

Typer af forarbejdningsdirektiver

Alle typer forprocessordirektiver er som følger:

  1. # Definere
  2. # inkluderer
  3. # ifdef
  4. # undef
  5. #ifndef
  6. # hvis
  7. #andet
  8. #elif
  9. #Afslut Hvis
  10. #fejl
  11. #pragma

1. #definér (makroer)

En makro er et kodestykke, der erstattes af en eller anden værdi af makrokoden. Enhver makro er for det meste beskrevet og defineret af dens #define-direktiv.

Syntaks:

#define token value

Der er to typer makroer:

  • Funktionslignende makroer
  • Objektlignende makroer
Funktionslignende makroer

Funktionen ligesom makro fungerer næsten som et funktionsopkald.

For eksempel:

#define MAX(a, b) ((a)>(b) ? (a): (b))

MAX her er makronavnet.

Eksempel:

Produktion:

Objektlignende makroer

Objektlignende makroer er typen af ​​identifikator erstattet af værdi. Det bruges mest til at repræsentere numeriske konstanter.

#define PI 3.1415

Her erstattes værdien af ​​PI med makroen.


Produktion:

2. # inkluder

Der er en anden funktionalitet til inkluderer forarbejdningsdirektivet. Det har sine egne tre varianter, der erstatter koden med den aktuelle kildefilkode.

Tre varianter er som følger:

  • #omfatte
  • #include”fil”
  • Medtag alt andet

#omfatte

Søger efter en fil i den definerede liste over systemet eller mapperne som specificeret søger derefter efter en standardliste med systembiblioteker.

#include”fil”

Denne type bruges til dine egne tilpassede headerfiler i programmet. Der søges først efter en fil med navnet fil i det aktuelle bibliotek efterfulgt af systemoverskriftsfiler og aktuelle kataloger over den aktuelle katalogfil.

# inkluder noget

Denne type inkluderer forarbejdningsdirektiv anvendes, når ingen af ​​de andre resterende to typer af direktivet, og dens argumenter ikke passer og tilfredsstiller beregningsstrukturen.

3. #Ifdef

Kontrollerer, om makroen er defineret af # definere eller ej. Hvis ja, udfører den koden, ellers vil den ikke.

Syntaks:

#ifdef MACRO
(
Code body
)
#endif
#undef:

Hvis du annullerer definitionen af ​​en makro, betyder det, at den er udefineret og forudgående med #undef-direktiv.

Syntaks:

#undef token

Produktion:

4. Ifndef

Denne processor kontrollerer, om #define er defineret eller ej af #define. Hvis ja, udfører den koden.

Syntaks:

#Ifndef MACRO
//code
#endif
#If

Denne processor fungerer som en if-loop kun, den evaluerer udtrykket eller tilstanden. Hvis betingelsen id er sand, udføres koden ellers ikke.

Syntaks:

#if expression
//code
#endif
#else

Direktivet #else-forbehandler bruges til at evaluere udtrykket eller betingelsen, hvis betingelsen til #if er falsk. Det kan bruges med direktiverne #if, #elif, #ifdef og #ifndef.

Syntaks:

#if expression
//if body
#else
//else body
#endif

Eksempel:

Produktion:

5. # Fejl

Som navnet antyder Fejlforarbejdningsdirektiv bruges til at indikere en fejl, og derefter giver compileren en dødelig fejl, hvis fejldirektivet findes og springer over de næste kompileringstrin.

Produktion:

6. #pragma

Det afhænger af kompilatoren, da forskellige operativsystemer og forskellige maskiner leverer alle typer af operativsystemfunktioner, som bruges af kompilatoren til at tilbyde yderligere oplysninger til compileren.

Syntaks:

#pragma token

Eksempel:

Produktion:

Hver forprocessor har sin egen betydning, ligesom betinget direktiv bruges til at kontrollere, om en del af programmet skal tages i betragtning baseret på scenarier eller ej.

Antag, at et program ønsker at blive kompileret i et specifikt miljø med den specifikke konfiguration af operativsystemet, men så snart det går til den fase af kompilering, kaster det en fejl, eller det kan give en ugyldig kode blot give sit program mulighed for et stort nej at koble programmet sammen og køre det under udførelsen. Der kan også være en anden mulighed, hvor den samme kildefil med to forskellige programmer kan foretage en tidskrævende konsistenskontrol eller dens umiddelbare data eller udskrive dataene med fejlsøgning.

Disse scenarier, der skal oprettes med beregning, kan også bruges til at køre på en maskine ved hjælp af forbehandlingsdirektiver.

Konklusion

Outputet fra C-forprocessoren ligner indgangen, bortset fra at alle forbehandlingsdirektiver er blevet erstattet med tomme linjer eller hvide mellemrum. Forskellige filer og formater har forskellige syntakser, der siger, at starten af ​​en ny fil er foretaget, eller som angiver en tilbagevenden til en fil eller behandling, bør udføres inden kompilering.

Alle scenarier bruges til at lade andre vide, om C-forbehandlerens magt er, og hvordan det udvikler sig med forskellige versioner af compiler, der er startet med GCC- og ANSI-standarder.

Anbefalede artikler

Dette er en guide til præprocessordirektiver i C. Her diskuterer vi typer af forprocessordirektiver med syntaks og eksempler. Du kan også se på de følgende artikler for at lære mere-

  1. Omvendt antal i C
  2. Sorterer i C
  3. Hashing-funktion i C
  4. Fortsæt med erklæring i C
  5. Sorterer i C #
  6. Hvordan hashing-funktion fungerer i php?

Kategori: