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 #include
preprosessor brukes til å inkludere header-filer til C-programmer. For eksempel,
#include
Her stdio.h
er en topptekstfil. Den #include
preprosessor Direktivet erstatter ovenfor tråd med innholdet i stdio.h
tekstfilen.
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 #define
prosessordirektivet.
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 if
uttalelse med en stor forskjell.
Den if
uttalelsen 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
, #else
og #elseif
direktiver 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 #else
direktivet kan brukes sammen med #if
direktivet.
#if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif
Du kan også legge til nestet betinget #if… #else
bruk#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