logo

Makrokomandos ir jų tipai C

C, a makrokomandą yra programos kodo dalis, kuri pakeičiama makrokomandos reikšme. Makrokomandą apibrėžia #apibrėžti direktyva. Kai kompiliatorius aptinka makrokomandos pavadinimą, jis pakeičia pavadinimą makrokomandos apibrėžimu. Makrokomandų apibrėžimų nereikia užbaigti kabliataškiu ( ; ).

Makrokomandų pavyzdžiai C

Toliau pateikiamos programos, iliustruojančios makrokomandų naudojimą C:



1 pavyzdys

Toliau pateiktame pavyzdyje parodytas makrokomandų naudojimas norint apibrėžti LIMIT.

C








// C program to illustrate macros> #include> // Macro definition> #define LIMIT 5> // Driver Code> int> main()> {> >// Print the value of macro defined> >printf>(>'The value of LIMIT'> >' is %d'>,> >LIMIT);> >return> 0;> }>

>

>

Išvestis

The value of LIMIT is 5>

2 pavyzdys

Toliau pateiktame pavyzdyje parodytas makrokomandų naudojimas stačiakampio plotui rasti.

C




// C program to illustrate macros> #include> // Macro definition> #define AREA(l, b) (l * b)> // Driver Code> int> main()> {> >// Given lengths l1 and l2> >int> l1 = 10, l2 = 5, area;> >// Find the area using macros> >area = AREA(l1, l2);> >// Print the area> >printf>(>'Area of rectangle'> >' is: %d'>,> >area);> >return> 0;> }>

>

>

Išvestis

Area of rectangle is: 50>

Paaiškinimas
Iš aukščiau pateiktos programos matome, kad kai tik kompiliatorius randa PLOTAS (l, b) programoje ji pakeičiama makrokomandų apibrėžimu, t.y. (l*b) . Vertės perduotos makrokomandos šablonui PLOTAS (l, b) taip pat bus pakeistas pareiškimu (l*b) . Todėl, PLOTAS(10, 5) bus lygus 10*5 .

Makrokomandų tipai C

C kalba yra dviejų tipų makrokomandos:

1. Objektinės makrokomandos

Į objektą panaši makrokomanda yra paprastas identifikatorius, kuris bus pakeistas kodo fragmentu. Jis vadinamas objektiniu, nes atrodo kaip objektas kode, kuris jį naudoja. Jis populiariai naudojamas simbolinį pavadinimą pakeisti skaitiniu / kintamuoju, vaizduojamu kaip konstanta.

Pavyzdys

Toliau pateiktas pavyzdys yra paprastos makrokomandos, t. y. objektinės makrokomandos, iliustracija.

C




// C program to illustrate macros> #include> // Macro definition> #define DATE 31> // Driver Code> int> main()> {> >// Print the message> >printf>(>'Lockdown will be extended'> >' upto %d-MAY-2020'>,> >DATE);> >return> 0;> }>

>

>

Išvestis

Lockdown will be extended upto 31-MAY-2020>

2. Grandininės makrokomandos

Makrokomandos makrokomandose vadinamos grandinės makrokomandomis. Grandinės makrokomandose pirmiausia išplečiama pirminė makrokomanda, tada išplečiama antrinė makrokomanda.

Pavyzdys

Žemiau pateikta programa yra grandinės makrokomandos iliustracija

C




// C program to illustrate macros> #include> > // Macro definition> #define INSTAGRAM FOLLOWERS> #define FOLLOWERS 138> > // Driver Code> int> main()> {> >// Print the message> >printf>(>'Geeks for Geeks have %dK'> >' followers on Instagram'>,> >INSTAGRAM);> > >return> 0;> }>

>

>

Išvestis

Geeks for Geeks have 138K followers on Instagram>

Paaiškinimas:
INSTAGRAM pirmiausia išplečiamas, kad būtų sukurti FOLLOWERS. Tada išplėstinė makrokomanda išplečiama, kad būtų gautas 138K rezultatas. Tai vadinama makrokomandų grandine.

3. Kelių eilučių makrokomandos

Objekto tipo makrokomandoje gali būti kelių eilučių. Taigi, norėdami sukurti kelių eilučių makrokomandą, turite naudoti pasvirąjį brūkšnį-naują eilutę.

Pavyzdys

Toliau pateikiama kelių eilučių makrokomandų iliustracija:

C




// C program to illustrate macros> #include> // Multi-line Macro definition> #define ELE 1,> >2,> >3> // Driver Code> int> main()> {> >// Array arr[] with elements> >// defined in macros> >int> arr[] = { ELE };> >// Print elements> >printf>(>'Elements of Array are: '>);> >for> (>int> i = 0; i <3; i++) {> >printf>(>'%d '>, arr[i]);> >}> >return> 0;> }>

>

>

Išvestis

Elements of Array are: 1 2 3>

4. Į funkcijas panašios makrokomandos

Šios makrokomandos yra tokios pačios kaip funkcijos iškvietimas. Jis pakeičia visą kodą, o ne funkcijos pavadinimą. Būtina pora skliaustų iškart po makrokomandos pavadinimo. Jeigu makrokomandos apibrėžime dedame tarpą tarp makrokomandos pavadinimo ir skliaustų, tada makrokomandas neveiks .
Į funkciją panaši makrokomanda pailginama tik tada, kai jos pavadinimas pateikiamas su skliaustų pora po jos. Jei to nepadarysime, funkcijos rodyklė gaus tikrosios funkcijos adresą ir sukels sintaksės klaidą.

Pavyzdys

Toliau pateiktame pavyzdyje pavaizduotos į funkciją panašios makrokomandos

C


gijų sinchronizavimas



// C program to illustrate macros> #include> // Function-like Macro definition> #define min(a, b) (((a) <(b)) ? (a) : (b))> // Driver Code> int> main()> {> >// Given two number a and b> >int> a = 18;> >int> b = 76;> >printf>(>'Minimum value between'> >' %d and %d is %d '>,> >a, b, min(a, b));> >return> 0;> }>

>

>

Išvestis

Minimum value between 18 and 76 is 18>

Štai vienas pavyzdys, kuris padės geriau suprasti makrokomandas:

Problema: Apibrėždami turime rasti apskritimo plotą AREA (r) Makrokomandos.

C




#include> #define PI 3.1416> #define AREA(r) (PI*(r)*(r))> int> main() {> >float> r = 7;>// radius of circle> > >printf>(>'Area of Circle with radius %.0f: %.3f'>, r, AREA(r));> >return> 0;> }> // This code is contributed by Susobhan Akhuli>

>

>

Išvestis

Area of Circle with radius 7: 153.938>

Išvada

Makrokomandos yra mažos kodo dalys, kurias galima vykdyti viena komanda. Jie gali būti naudojami automatizuoti užduotis, supaprastinti sudėtingus procesus ir pagerinti našumą. Tačiau makrokomandų naudojimas taip pat turi tam tikrų trūkumų. Štai keletas makrokomandų pranašumų ir trūkumų:

DUK apie C makrokomandas

Q1. Kokie yra makrokomandų pranašumai?

Atsakymas:

    Padidėjęs našumas: automatizuojant pasikartojančias užduotis makrokomandos gali sutaupyti laiko ir sumažinti klaidų skaičių. Tinkinimas: makrokomandas galima pritaikyti, kad jos atitiktų konkrečius poreikius, kad būtų galima lanksčiau atlikti užduotis. Nuoseklumas: makrokomandos gali padėti užtikrinti užduočių nuoseklumą, laikantis iš anksto nustatytų instrukcijų. Efektyvumas: makrokomandos gali atlikti užduotis greičiau nei žmonės, todėl padidėja bendras efektyvumas. Naudojimo paprastumas: makrokomandas lengva kurti ir naudoti, joms reikia mažai arba visai nereikia programavimo žinių

Q2. Kokie makrokomandų trūkumai?

Atsakymas:

    Saugumo rizika: makrokomandos gali kelti pavojų saugumui, jei jos nėra tinkamai apsaugotos arba naudojamos kenkėjiškam kodui vykdyti. Ribotas funkcionalumas: makrokomandos gali nesugebėti atlikti sudėtingesnių užduočių, o tai apriboja jų naudingumą. Suderinamumo problemos: makrokomandos gali būti nesuderinamos su visomis programinės įrangos programomis, todėl jų naudingumas ribojamas. Priežiūra: makrokomandoms gali prireikti priežiūros ir atnaujinimų, o tai gali užtrukti ir brangiai kainuoti. Priklausomybė: Per didelis pasitikėjimas makrokomandomis gali sumažinti problemų sprendimo įgūdžius ir kritinį mąstymą.

Q3. Ar makrokomandos gali priimti argumentus?

Atsakymas:

Taip, makrokomandos gali turėti argumentų. Pavyzdžiui, MAX yra makrokomanda, kuri paima du argumentus (a ir b) ir grąžina didžiausią iš dviejų.

4 klausimas. Ar makrokomandos gali būti rekursinės?

Atsakymas:

Ne, makrokomandos negali būti rekursinės. Jei makrokomanda tampa rekursyvi, apibrėžimas nurodo save patį ir išankstinio apdorojimo metu sukels begalinę kilpą.