Oversikt
Alle utsagnene som begynner med#(hash) symbol er kjent som preprocessordirektiver/kommandoerderfor,#definereog#inkludereer også kjent som forbehandlerdirektiver. Forbehandler-direktiver utføres før alle andre kommandoer i programmet vårt. I et C-program skriver vi generelt alle forbehandlerdirektivene utenforhoved()funksjon på toppen av vårt C-program. De#defineredirektiv brukes til å definere konstanter eller et uttrykk i vårt C-program, mens#inkluderedirektiv brukes til å inkludere innholdet i overskriftsfiler i vårt C-program.
Introduksjon
Det er tre hovedtyper av forprosessordirektiver som brukes i et C-program:makroer,filinkludering,betinget kompilering.
Makroer
Det er en konstant verdi eller et uttrykk som kan defineres ved å bruke #define-kommandoen i vårt C-program. Eksempler:
- Definere en verdi
- Definere et uttrykk
filinkludering
Det legges til definert som innholdet i en overskriftsfil i vårt C-program, og det kan gjøres ved å bruke #include-kommandoen. Eksempler:
- Inkludert standard input output header fil
- Inkludert standard bibliotekfunksjoner header-fil
betinget kompilering
Den kjører eller hopper over et stykke kode ved en makrotilstand (en konstant verdi eller et uttrykk definert ved hjelp av #define), og det kan utføres ved hjelp av kommandoer som#ifdef,#slutt om,#ifndef,#hvis,#ellersog#elifi et C-program. Eksempel:
- utskriftsalder hvismakroer definert, ellers er ikke utskrift definertUtgang:
Nå, for å forstå hvordan og hvorfor preprocessor-direktiver utføres før kompilering, la oss se på prosessen med hvordan hele kompileringsprosessen fungerer i et C-program.
La oss anta at vi har skrevet enHei Cprogram for å skrive utHei Verden!i utgangen. Kompileringsprosessen vil generere en kjørbar fil,hello.exefra vårHei Cprogramfil.
Kompileringsprosess
Det er en prosess for å konvertere menneskelig forståelig (høyt nivå) kode til maskinforståelig (lavt nivå) kode. La oss se på trinnene som er involvert i kompileringsprosessen.
- Trinn 1, Vi har en skrevet C Program-fil med en forlengelse på.cdvs.Hei Cfil.
- Steg 2erforhåndsbehandling av header-filer, alle utsagnene som begynner med#(hash-symbol) erstattes under kompileringsprosessen ved hjelp av en pre-prosessor. Den genererer en mellomfil med.Jegfiltypen, dvsHei jegfil.
- Trinn 3er en samling avHei jegfil, oversetter kompilatorprogramvareHei jegfil tilhei.sfil med instruksjoner på monteringsnivå (lavnivåkode).
- Trinn 4, assembler-nivå kodeinstruksjoner konverteres til en maskinforståelig kode (binær/heksadesimal form) av assembler, og filen som genereres er kjent som objektfilen med en utvidelse av.objdvs.hei.objfil.
- Trinn 5,Linkerbrukes til å koble bibliotekfilene med objektfilen for å definere de ukjente setningene. Den genererer en kjørbar fil med.exeutvidelse, dvshello.exefil.
- Deretter kan vi kjørehello.exekjørbar fil for å få ønsket utgang på utdatavinduet vårt.
Diagrammet nedenfor viser alle trinnene som er involvert i kompileringsprosessen.
La oss nå se definisjonene, syntaksen og eksemplene på #define og #include.
Hva er #define i C?
- #define er et forprosessordirektiv som brukes til å definere makroer i et C-program.
- #define er også kjent som et makrodirektiv.
- #define-direktivet brukes til å deklarere noen konstante verdier eller et uttrykk med et navn som kan brukes i hele vårt C-program.
- Hver gang et #define-direktiv påtreffes, erstatter det definerte makronavnet det med en definert konstant verdi eller et uttrykk.
Hva er #inkluder i C?
- #include er et forbehandlerdirektiv som brukes tilfilinkluderingi et C-program.
- #include er også kjent som enfilinkluderingdirektiv.
- #include-direktivet brukes til å legge til innholdet/kodebiten fra en reservert overskriftsfil til kodefilen vår før kompileringen av C-programmet vårt.
- Disse overskriftsfilene inkluderer definisjoner av mange forhåndsdefinerte funksjoner somprintf(),scanf(),getch(), etc.
Syntaks for #define i C
ELLER
CNAME: Navn på konstantverdien eller uttrykket. Vanligvis definerer programmerere det med store bokstaver, men det er ikke nødvendig somGRENSE,OMRÅDE(l,b), etc.
verdi: Det kan være en hvilken som helst konstant verdi og kan være av hvilken som helst datatypeint,røye,flyte,strengetc.
uttrykk: Det kan være hvilken som helst kode eller et hvilket som helst matematisk uttrykk som(lengde * bredde),(a * a), etc.
Eksempel syntaks:
Merk: #define-direktivet krever ikke en;(semi-kolon) på slutten av setningen.
Syntaks for #include i C
ELLER
filnavn: Det er overskriftsfilnavnet som kreves i vårt C-program.
Eksempel syntaks:
Eksempler på #define i C
Vi skal se to eksempler på#definere, først med en konstant verdi og andre med et uttrykk.
Område av en sirkel som bruker #define CNAME-verdi.
Vi definerer verdien avPIå være3.14i eksemplet nedenfor ved å bruke#defineredirektivet bruker viPIverdi ved beregning avområde av sirkelendvs.PI * r * r.
C-program:
Egendefinert inndata:
Utgang:
Du kan kjøre og sjekke koden dinher.
Forklaring:
- Vi har inkludert en standard inndata-header-fil ved hjelp av#include
direktiv. - Vi har definert verdien avPIå være3.14ved å bruke #define-direktivet.
- Ihoved()funksjon, bruker vi en flytende input-variabelradiusog enområdevariabel for å lagre arealverdien.
- område = PI * radius * radius, i denne uttalelsen,PIer erstattet av3.14slik vi har definert det ved å bruke#definerekommando.
- printf("\nArea of Circle : %0.2f", area);vil skrive ut arealet av sirkelen med presisjon på 2 desimaler.
- returner 0;avslutter programmet.
Kvadrat av et gitt tall ved hjelp av #define CNAME-uttrykk.
Vi definerer et matematisk uttrykk(a * a)til cnameSQR(a)å beregnekvadratet av et tallbruker#defineredirektiv.
C-program:
Egendefinert inndata:
Produksjon:
Du kan kjøre og sjekke koden dinher.
Forklaring:
- Vi har inkludert en standard inndata-header-fil ved hjelp av#include
direktiv. - Vi har definert et uttrykkSQR(a)å være(a * a)bruker#defineredirektiv.
- Ihoved()funksjon, bruker vi en inngående heltallsvariabelnum.
- printf("\nKvadrat av %d : %d", num, SQR(tall));, i denne uttalelsenSQRer erstattet av(om * om)og kvadrat avnumskrives ut i utgangen.
- returner 0;avslutter programmet.
Eksempel på #inkluder i C
I dette eksemplet beregner vi summen av to inntastede tall ved å brukescanf()ogprintf()funksjoner, funksjoner / definisjon av disse funksjonene er inkludert i programmet ved hjelp av#include
C-program:
Egendefinert inndata:
Utgang:
Du kan kjøre og sjekke koden dinher.
Forklaring:
- Vi har inkludert en standard inndata-header-fil ved å bruke #include
-direktivet. - Nå kan vi bruke standard input output-funksjoner somprintf()for utgang ogscanf()for innspill.
- Ihoved()funksjon, bruker vi tre inngående heltallsvariablernummer1,nummer2ogsum.
- printf("Skriv inn to tall for å finne summen deres: ");skriver utSkriv inn to tall for å finne summen deres:i utgangen.
- scanf("%d %d", &num1, &num2);, denne setningen brukes få to inngående heltall fra brukeren, dvs.nummer1ognummer2.
- printf("\nSummen av %d og %d er: %d", num1, num2, sum);vil skrive ut summen av to inngående heltallnummer1ognummer2.
- printf()ogscanf()funksjoner er forhåndsdefinert istdio.hheader-fil, og det er derfor vi kan bruke dem i programmet vårt.
- returner 0;avslutter programmet.
Konklusjon
- #definereog#inkludereer forbehandlerdirektiver som er skrevet utenforhoved()funksjon.
- Forbehandlerkommandoer utføres før kompileringen av programmet vårt.
- #define brukes til å deklarere en konstant verdi eller et uttrykk med enCNAMEsom kan brukes gjennom hele programmet.
- #include brukes til å inkludere innholdet i en overskriftsfil i vårt C-program.