C Programmering

Makro i C-sprog

Makro i C-sprog
En makro på C-sprog er et stykke kode, der er tildelt et navn. Når navnet bruges hvor som helst i programmet, erstattes makroværdien før programmets kompilering. I denne artikel vil vi se detaljeret, hvordan man skriver en makro på C-sprog.

Overvej følgende kode:

START
INTEGER n = 5;
PRINT ("Værdien af ​​n er% d", n);
ENDE

Ovenstående kode er ikke en gyldig C-kode.

Men følgende kode er gyldig:

// Eksempel1.c
#define START int main ()
#define END
#define INTEGER int
#definer PRINT (A, B) printf (A, B)
START
INTEGER n = 5;
PRINT ("Værdien af ​​n er% d", n);
ENDE

Før kompilering er makroen START, INTEGER, PRINT og END blevet erstattet af deres værdi, og koden bliver en gyldig C-kode. Vi kan kontrollere ved hjælp af følgende kommando:

gcc -E Eksempel1.c

Denne kommando vises efter udvidelse af alle makroer.

Nu ser vi forskellige typer makroer:

1. Objektlignende makroer:

Syntaks:

#definer makronavn makroværdi

Hvis makroen tager mere end en linje, kan vi gøre det som følger:

#definer makronavn makroværdi1 \
makroværdi2 \
makroværdi3
#definer MAX 200

Denne makro ligner et dataobjekt, hvorfor denne type makro kaldes som en objektlignende makro.

// Eksempel2.c
//#omfatte
#definer MAX 200
int main ()

printf ("MAX-værdi er:% d", MAX);
returnere 0;

I Exapmle2.c, MAX er en makro. Fra output observerer vi det MAX erstattes af dens værdi 200.

2. Funktionslignende makroer:

Syntaks:

#definer makronavn () makroværdi

makronavn er et brugerdefineret navn på makroen. Et par parenteser skal sættes efter makronavn. Der er ikke plads til mellemrum makronavn og parentes. Vi kan også sende argumenter i denne type makroer.

#definer tilføj (x, y) x + y

Denne makro ligner et funktionsopkald, hvorfor denne type makro kaldes en funktionslignende makro.

// Eksempel3.c
#definer tilføj (x, y) x + y
int main ()

int a;
flyde b;
a = tilføj (4,5);
b = tilføj (2.5,3.6)
returnere 0;

I eksempel 3.c, Vi har set, at i modsætning til C's funktion erstatter makroen kun koden med argumenter uden at beregne den. Så vi kan videregive forskellige datatyper ved hjælp af den samme makro.

Hvis vi sætter et mellemrum mellem makronavnet og parentesen, fungerer det det samme som en objektlignende makro. Nedenfor illustrerer C-eksemplet dette.

// Eksempel 4.c
#definer tilføj (x, y) x + y
int main ()

int a;
flyde b;
a = tilføj (4,5);
b = tilføj (2.5,3.6)

I eksempel 4.c, vi har set, at makrotilføjelsen erstattes af (x, y) x + y . Samme som en objektlignende makro.

3. Makro til polering af tegn:
På C-sprog bruges ## operator til at indsætte token. Ved hjælp af denne operator kan vi kombinere to gyldige tokens til et gyldigt token.
Eksempel:

// Eksempel 5.c
#definer MARGE (x, y) x ## y
int main ()

int num = MARGE (52,34);
returnere 0;

Hvis vi prøver at indsætte token, der ikke genererer et gyldigt token, giver C-compileren en fejl eller advarsel.

// Eksempel 6.c
#definer MARGE (x, y) x ## y
int main ()

int num = MARGE (52, +);
returnere 0;

I Eksempel 6.c, vi har en fejlmeddelelse, fordi vi efter en kombination af to tokens får et ugyldigt token '52 + '.

4. Makro til strengning:
På C-sprog bruges # operator til at konvertere en makroparameter til en strengkonstant. Når en # -operator går foran en makroparameter, konverteres parameteren til en streng-bogstav. Stringizing kan bruges til objektlignende og funktionslignende makroer.
Eksempel:

// Eksempel 7.c
#definer STRINGIZING (x) #x
int main ()

printf (STRINGIZING (Hello World));
returnere 0;

I Eksempel 7.c vi har en streng “Hello World” ved hjælp af STRINGIZING-makroen.

Konklusion:

Denne artikel har lært om alle typer makro-lignende Objektlignende makroer, Funktionslignende makroer, Makro til polering af poletter, Makro til Stringizing og Makro til Stringizing på C-sprog. Nu kan vi uden tvivl bruge en makro i vores C-program.

Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...
OpenTTD vs Simutrans
Oprettelse af din egen transportsimulering kan være sjovt, afslappende og ekstremt lokkende. Derfor skal du sørge for at prøve så mange spil som mulig...
OpenTTD Tutorial
OpenTTD er et af de mest populære forretningssimuleringsspil derude. I dette spil skal du oprette en vidunderlig transportvirksomhed. Du starter dog i...