Makro- ja rullfunktsioonide erinevus

Peamine erinevus - Macro vs Inline Funktsioon
 

Makro on koodilõik, mis on eeltöötleja direktiiv. Inline-funktsioon on C ++ täiustamise funktsioon, et minimeerida programmi täitmisaega. Seetõttu võtme erinevus makro ja sisemise funktsiooni vahel on see eeltöötleja kontrollib makro, sisemise funktsiooni aga kompilaator.

Programmi alguses on makro, millele eelneb räsi märk. Kui programmis on makro nimi, asendatakse see makro sisuga.

SISU

1. Ülevaade ja peamised erinevused
2. Mis on makro
3. Mis on sisemine funktsioon?
4. Kõrvuti võrdlus - makro vs sirge funktsioon tabelina
5. Kokkuvõte

Mis on makro?

Eeltöötleja on programm, mis töötleb lähtekoodi enne kompilaatori läbimist. See töötab eeltöötleja käsurida või direktiive kasutades. Programmis paigutatakse eeltöötleja käskkoodid lähteprogrammi enne põhiprogrammi. Enne lähtekoodi läbimist kompilaatorist kontrollib eeltöötleja seda eeltöötluse direktiivide osas. Protsessieelsetel direktiividel on sümbol #. Erinevalt teistest väidetest ei lõpe need semikooloniga. Üks tüüpi eeltöötlejate direktiiv on makro. Üldiselt kirjutatakse makrosid suurtähtedega.

Joonis 01: C ++ programm makrodega

Ülaltoodud programmi kohaselt tähistab rida 3 ja rida 4 makrosid. Pindala arvutamisel asendatakse PI väärtus määratletud makro abil. 14. real, maht = CUBE (väärtus), laiendab eeltöötleja avalduse maht = (väärtus * väärtus * väärtus). Kuubi leidmise saab kirjutada funktsioonina, kuid siin kirjutatakse see makro abil. Kui on avaldus maht = CUBE (x + y), siis laieneb see mahule = (x + y * x + y * x + y).

Mõnda programmeerimisluba võib valesti kirjutada. Neid saab makrode abil asendada. nt. #defineeri AND &&, #defineeri VÕI || Makrodefinitsioon võib sisaldada ka väljendeid, näiteks #define AREA 4 * 5.56.

Mis on sisemine funktsioon??

Funktsiooni kutsumisel võtab kompilaator selle täitmiseks veidi aega. Kui funktsioon ei ole väga keeruline, saab programmeerija selle funktsiooni teisendada sisemiseks funktsiooniks. Vaadake allolevat programmi.

Joonis 02: funktsioon ilma tekstita

Print_hello on lihtne funktsioon. Funktsiooni kutsumisel prindib see stringi “Tere”. Selle funktsiooni täitmisaeg on 0,187 s. Kui kasutate tekstisisest märksõna järgmiselt, lüheneb täitmisaeg 0,064 sekundini.

Joonis 03: Inline-funktsioon

Seetõttu lühendab sisemise märksõna kasutamisega täitmisaeg. Sidusfunktsioonid ei pruugi töötada, kui on silmuseid, lülituslauseid ja kui funktsioon sisaldab staatilisi muutujaid või rekursiivseid funktsioone.

Mis vahe on makro- ja rullfunktsioonil??

Makro vs sirgjooneline funktsioon

Makro on koodilõik, mis on eeltöötluse direktiiv, mis sisaldub programmi alguses, millele eelneb räsi märk. Inline-funktsioon on C ++ täiustamise funktsioon, et minimeerida programmi täitmisaega.
Hindamise aeg
Makrodes hinnatakse argumenti iga kord, kui seda programmis kasutatakse. Inline-s hinnatakse argumenti üks kord.
Kontrollinud
Makrot kontrollib eeltöötleja. Sidusfunktsiooni kontrollib kompilaator.
 Märksõna
Marco kasutab #define. Inline-funktsioon kasutab märksõna 'inline'.
Kasutamine
Makrot saab kasutada konstantide, avaldiste määratlemiseks, sõnasõnaliseks teksti asendamiseks ja funktsioonide määratlemiseks. Programmi täitmisaja minimeerimiseks saab kasutada sisemist funktsiooni.
Lõpetamine
Makro lõpeb uue reaga. Inline-funktsioon lõpeb lokirullidega inline-funktsiooni lõpus.
Määratlev punkt
Marco on määratletud programmi alguses. Sisefunktsioon võib olla klassis või väljaspool seda.

Kokkuvõte - Emacro vs Inline Funktsioon

Selles artiklis käsitleti makro- ja rullfunktsioonide erinevust. Neid mõisteid kasutatakse C ++ programmeerimisel. Makro ja sisemise funktsiooni erinevus seisneb selles, et makrot kontrollib eeltöötleja, samas kui sisemist funktsiooni kontrollib kompilaator.

Viide:

1. “Töötlemiseelsed direktiivid”. Cplusplus.com. Saadaval siin 
2. C-funktsioonid. Www.tutorialspoint.com, Tutorials Point, 19. märts 2018. Saadaval siin