C Forprosessor og makroer

I denne opplæringen vil du bli introdusert for c preprosessors, og du vil lære å bruke #include, #define og betinget kompilering ved hjelp av eksempler.

C-prosessoren er en makro-prosessor (lar deg definere makroer) som forvandler programmet ditt før det kompileres. Disse transformasjonene kan være inkludering av topptekstfil, makroutvidelser etc.

Alle forhåndsbehandlingsdirektiver begynner med et #symbol. For eksempel,

 #define PI 3.14

Noen av de vanlige bruksområdene av C-forprosessor er:

Inkludert headerfiler: #include

Den #includepreprosessor brukes til å inkludere header-filer til C-programmer. For eksempel,

 #include 

Her stdio.her en topptekstfil. Den #includepreprosessor Direktivet erstatter ovenfor tråd med innholdet i stdio.htekstfilen.

Det er grunnen til at du må bruke #include før du kan bruke funksjoner som scanf()og printf().

Du kan også lage din egen topptekstfil som inneholder funksjonserklæring og inkludere den i programmet ditt ved hjelp av dette prosessordirektivet.

 #include "my_header.h"

Besøk denne siden for å lære mer om bruk av headerfiler.

Makroer som bruker #definer

En makro er et fragment av kode som får et navn. Du kan definere en makro i C ved hjelp av #defineprosessordirektivet.

Her er et eksempel.

 #define c 299792458 // speed of light

Her, når vi bruker c i programmet vårt, erstattes det med 299792458.

Eksempel 1: #definer preprosessor

 #include #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; )

Fungerer som makroer

Du kan også definere makroer som fungerer på en lignende måte som et funksjonsanrop. Dette er kjent som funksjonslignende makroer. For eksempel,

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

Hver gang programmet møter circleArea(argument), erstattes det av (3.1415*(argument)*(argument)).

Anta at vi passerte 5 som et argument da, det utvides som nedenfor:

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

Eksempel 2: Bruk #define preprocessor

 #include #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; )

Besøk denne siden for å lære mer om makroer og #define preprocessor.

Betinget kompilering

I C-programmering kan du instruere forprosessoren om du skal inkludere en blokk med kode eller ikke. For å gjøre dette kan betingede direktiver brukes.

Det ligner på en ifuttalelse med en stor forskjell.

Den ifuttalelsen er testet under utførelsen tid til å sjekke om en blokk med kode skal utføres eller ikke, mens de conditionals brukes til å inkludere (eller hoppe) en blokk med kode i programmet før henrettelsen.

Bruk av betinget

  • bruke annen kode avhengig av maskin, operativsystem
  • kompilere samme kildefil i to forskjellige programmer
  • å ekskludere visse koder fra programmet, men å beholde den som referanse for fremtidig formål

Hvordan bruke betinget?

For å bruke betinget, #ifdef, #if, #defined, #elseog #elseifdirektiver blir brukt.

#ifdef-direktivet

 #ifdef MACRO // conditional codes #endif 

Her er betingede koder bare inkludert i programmet hvis MACRO er definert.

#if, #elif og #else-direktivet

 #if expression // conditional codes #endif 

Her er uttrykk et uttrykk av heltallstype (kan være heltall, tegn, aritmetisk uttrykk, makroer og så videre).

Betingelseskodene er bare inkludert i programmet hvis uttrykket blir vurdert til en verdi som ikke er null.

Det valgfrie #elsedirektivet kan brukes sammen med #ifdirektivet.

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

Du kan også legge til nestet betinget #if… #elsebruk#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 

#definert

Spesialoperatøren #definert brukes til å teste om en bestemt makro er definert eller ikke. Det brukes ofte med #if-direktivet.

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

Forhåndsdefinerte makroer

Her er noen forhåndsdefinerte makroer i C-programmering.

Makro Verdi
__DATE__ En streng som inneholder gjeldende dato
__FILE__ En streng som inneholder filnavnet
__LINE__ Et helt tall som representerer gjeldende linjenummer
__STDC__ Hvis følger ANSI-standard C, er verdien et ikke-heltall
__TIME__ En streng som inneholder gjeldende dato.

Eksempel 3: Få aktuell tid ved hjelp av __TIME__

Følgende program viser gjeldende tid ved hjelp av __TIME__makro.

 #include int main() ( printf("Current time: %s",__TIME__); )

Produksjon

 Nåværende tid: 19:54:39

Anbefalte målinger

  • Linjekontroll
  • Pragmas
  • Preprocessor-utgang
  • Andre direktiver

Interessante artikler...