Makro ja tekstisisese funktsiooni erinevus

Sisukord:

Makro ja tekstisisese funktsiooni erinevus
Makro ja tekstisisese funktsiooni erinevus

Video: Makro ja tekstisisese funktsiooni erinevus

Video: Makro ja tekstisisese funktsiooni erinevus
Video: LightBurn устанавливает и сначала использует лазеры X-Carve / Opt 2024, November
Anonim

Põhierinevus – makro vs tekstisisene funktsioon

Makro on koodi fragment, mis on eelprotsessori direktiiv. Sisene funktsioon on C++ täiustusfunktsioon programmi täitmisaja minimeerimiseks. Seetõttu on peamine erinevus makro ja tekstisisese funktsiooni vahel see, et makrot kontrollib eelprotsessor, samas kui sisemist funktsiooni kontrollib kompilaator.

Makro on lisatud programmi algusesse, millele eelneb räsimärk. Kui programmis on makro nimi, asendatakse see makro sisuga.

Mis on makro?

Eelprotsessor on programm, mis töötleb lähtekoodi enne, kui see kompilaatorist läbi läheb. See töötab eelprotsessori käsurea või direktiivide abil. Programmis asetatakse eeltöötlejate käsud lähteprogrammi enne põhiprogrammi. Enne kui lähtekood kompilaatorist läbi läheb, kontrollib eeltöötleja seda eeltöötlusjuhiste osas. Eelprotsessori direktiividel on sümbol. Erinev alt teistest väidetest ei lõpe need semikooloniga. Üks eelprotsessori direktiivi tüüp on makro. Üldiselt kirjutatakse makrod suurtähtedega.

Erinevus makro ja tekstisisese funktsiooni vahel
Erinevus makro ja tekstisisese funktsiooni vahel

Joonis 01: C++ programm makrodega

Vastav alt ül altoodud programmile tähistavad rida 3 ja rida 4 makrosid. Pindala arvutamisel asendatakse PI väärtus määratletud makroga. Real 14, maht=CUBE(väärtus), laiendab eeltöötleja lauset kujul volume=(väärtusväärtusväärtus). Kuubi leidmise saab kirjutada funktsioonina, kuid siin kirjutatakse see makro abil. Kui on lause nagu maht=CUBE(x+y), siis see laieneb mahuks=(x+yx+yx+y).

Mõned programmeerimismärgid võivad kergesti olla valesti kirjutatud. Neid saab makrode abil asendada. nt. define AND &&, define VÕI ||. Makrodefinitsioon võib sisaldada ka selliseid väljendeid nagu define AREA 45.56.

Mis on tekstisisene funktsioon?

Kui funktsiooni kutsutakse, kulub kompilaatoril selle täitmiseks veidi aega. Kui funktsioon ei ole väga keeruline, saab programmeerija selle funktsiooni tekstisiseseks funktsiooniks teisendada. Vaadake allolevat programmi.

Makro ja tekstisisese funktsiooni erinevus_joonis 2
Makro ja tekstisisese funktsiooni erinevus_joonis 2

Joonis 02: Funktsioon ilma tekstisiseseta

Print_hello on lihtne funktsioon. Funktsiooni kutsumisel prindib see stringi "Tere". Selle funktsiooni täitmise aeg on 0,187 sekundit. Kui kasutate tekstisisest märksõna järgmiselt, väheneb täitmisaeg 0,064 sekundini.

Peamised erinevused makro ja tekstisisese funktsiooni vahel
Peamised erinevused makro ja tekstisisese funktsiooni vahel

Joonis 03: tekstisisene funktsioon

Seetõttu lüheneb inline märksõna kasutamisel täitmise aeg. Tekstisisesed funktsioonid ei pruugi töötada, kui on olemas tsüklid, lülituslaused ja kui funktsioon sisaldab staatilisi muutujaid või rekursiivseid funktsioone.

Mis vahe on makro- ja tekstisisesel funktsioonil?

Makro vs tekstisisene funktsioon

Makro on koodi fragment, mis on eeltöötluse direktiiv, mis sisaldub programmi alguses, millele eelneb räsimärk. Sisene funktsioon on C++ täiustusfunktsioon programmi täitmisaja minimeerimiseks.
Hindamisaeg
Makro puhul hinnatakse argumenti iga kord, kui seda programmis kasutatakse. Reases hinnatakse argumenti üks kord.
Kontrollinud
Eelprotsessor kontrollib makrot. Kompilaator kontrollib tekstisisest funktsiooni.
Märksõna
Marco kasutab define. Sisene funktsioon kasutab märksõna "inline".
Kasutus
Makrot saab kasutada konstantide, avaldiste defineerimiseks, sõnasõnaliseks teksti asendamiseks ja funktsioonide defineerimiseks jne. Programmi täitmisaja minimeerimiseks saab kasutada sisemist funktsiooni.
Lõpetamine
Makro lõpeb uue reaga. Sisene funktsioon lõpeb lokkis sulguga tekstisisese funktsiooni lõpus.
Punkti määratlemine
A Marco on määratletud programmi alguses. Sisene funktsioon võib olla klassi sees või väljaspool seda.

Kokkuvõte – makro vs tekstisisene funktsioon

Selles artiklis käsitleti makro ja tekstisisese funktsiooni erinevust. Neid mõisteid kasutatakse C++ programmeerimises. Makro ja tekstisisese funktsiooni erinevus seisneb selles, et makrot kontrollib eelprotsessor, samas kui sisemist funktsiooni kontrollib kompilaator.

Soovitan: