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.
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
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.
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.
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. |
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.
1. “Töötlemiseelsed direktiivid”. Cplusplus.com. Saadaval siin
2. C-funktsioonid. Www.tutorialspoint.com, Tutorials Point, 19. märts 2018. Saadaval siin