Definer og inkluder i C - Scaler-emner (2023)

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 definert
    Utgang:

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.

Definer og inkluder i C - Scaler-emner (1)

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.

Definer og inkluder i C - Scaler-emner (2)

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

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.

References

Top Articles
Latest Posts
Article information

Author: Madonna Wisozk

Last Updated: 09/15/2023

Views: 6001

Rating: 4.8 / 5 (68 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Madonna Wisozk

Birthday: 2001-02-23

Address: 656 Gerhold Summit, Sidneyberg, FL 78179-2512

Phone: +6742282696652

Job: Customer Banking Liaison

Hobby: Flower arranging, Yo-yoing, Tai chi, Rowing, Macrame, Urban exploration, Knife making

Introduction: My name is Madonna Wisozk, I am a attractive, healthy, thoughtful, faithful, open, vivacious, zany person who loves writing and wants to share my knowledge and understanding with you.