Põhierinevus - makro vs sisemine funktsioon
Makro on koodijupp, mis on eeltöötlusdirektiiv. Sisseehitatud funktsioon on C ++ täiustamisfunktsioon programmi täitmisaja minimeerimiseks. Seetõttu on peamine erinevus makro ja sisemise funktsiooni vahel see, et eelprotsessor kontrollib makrot, kompileerija aga sisemist funktsiooni.
Makro lisatakse programmi algusesse, millele eelneb räsimä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 seesmine 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äsurea või direktiivide abil. Programmis paigutatakse eeltöötleja direktiivid lähteprogrammi enne põhiprogrammi. Enne lähtekoodi kompilaatorist läbimist kontrollib eeltöötleja seda eeltöötleja direktiivide jaoks. Eeltöötleja direktiividel on sümbol #. Erinevalt teistest väidetest ei lõpe need semikooloniga. Üks eelprotsessorite direktiivi tüüp on makro. Üldiselt kirjutatakse makrod suurtähtedega.
Joonis 01: C ++ programm makrode abil
Vastavalt ülaltoodud programmile näitavad read 3 ja 4 makrosid. Pindala arvutamisel asendatakse PI väärtus määratletud makro abil. Real 14, maht = CUBE (väärtus), laiendab eeltöötleja lauset väärtusena = (väärtus * väärtus * väärtus). Kuubi leidmise saab kirjutada funktsioonina, kuid siin on see kirjutatud makro abil. Kui avaldis on maht = CUBE (x + y), siis laieneb see väärtuseni = (x + y * x + y * x + y).
Mõned programmeerimismärgid võidakse lihtsalt valesti sisestada. Neid saab makrode abil asendada. nt #define AND &&, #define OR ||. Makrodefinitsioon võib sisaldada ka selliseid väljendeid nagu #define AREA 4 * 5.56.
Mis on seesmine funktsioon?
Funktsiooni kutsumisel võtab kompilaator selle täitmiseks aega. Kui funktsioon pole eriti keeruline, saab programmeerija funktsiooni teisendada funktsioonisiseseks. Vaadake allolevat programmi.
Joonis 02: funktsioon ilma sissepoole
Prindi_tere on lihtne funktsioon. Funktsiooni kutsumisel prinditakse string “Hello”. Selle funktsiooni täitmisaeg on 0,187 sekundit. Kui kasutate tekstisisest märksõna järgmiselt, väheneb täitmisaeg 0,064 sekundini.
Joonis 03: funktsioon sees
Seetõttu lüheneb tekstisisese märksõna abil täitmisaeg. Tekstisisesed funktsioonid ei pruugi töötada, kui on tsükleid, lülitilauseid ja funktsioon sisaldab staatilisi muutujaid või rekursiivseid funktsioone.
Mis vahe on makro ja sisemise funktsiooni vahel?
Erinev artikkel keskel enne tabelit
Makro vs seesmine funktsioon |
|
Makro on koodijupp, mis on eeltöötlusdirektiiv, mis sisaldub programmi alguses, millele eelneb räsimärk. | Sisseehitatud funktsioon on C ++ täiustamisfunktsioon programmi täitmisaja minimeerimiseks. |
Hindamisaeg | |
Makros hinnatakse argumenti iga kord, kui seda programmis kasutatakse. | Ridavalt hinnatakse argumenti üks kord. |
Kontrollitud | |
Eeltöötleja kontrollib makrot. | Koostaja kontrollib tekstisisest funktsiooni. |
Märksõna | |
Marco kasutab #define. | Funktsioon tekstisisene kasutab märksõna 'inline'. |
Kasutamine | |
Makrot saab kasutada konstantide, avaldiste, sõna otseses mõttes teksti asendamiseks ja funktsioonide jne määratlemiseks. | Programmi käivitamisaja minimeerimiseks saab kasutada sisemist funktsiooni. |
Lõpetamine | |
Makro lõpeb uue reaga. | Funktsioon Inline lõpeb sisemise funktsiooni lõpus oleva lokkisulguriga. |
Määratluspunkt | |
Marco on määratletud programmi alguses. | Sisseehitatud funktsioon võib olla nii klassi sees kui ka väljaspool seda. |
Kokkuvõte - funktsioon Makro vs seesmine funktsioon
Selles artiklis käsitleti makro ja sisemise funktsiooni erinevust. Neid mõisteid kasutatakse C ++ programmeerimisel. Makro ja tekstisisese funktsiooni erinevus seisneb selles, et makrot kontrollib eeltöötleja, sisemist funktsiooni kontrollib kompilaator.