Avainero – makro vs. sisäinen toiminto
Makro on koodinpätkä, joka on esikäsittelyohje. Sisäinen toiminto on C++-parannusominaisuus, joka minimoi ohjelman suoritusajan. Siksi tärkein ero makron ja sisäisten funktioiden välillä on, että esiprosessori tarkistaa makron, kun taas kääntäjä tarkistaa inline-funktion.
Makro sisältyy ohjelman alkuun, jota edeltää hash-merkki. Kun ohjelmassa on makron nimi, se korvataan makron sisällöllä.
Mikä on makro?
Esiprosessori on ohjelma, joka käsittelee lähdekoodin ennen kuin se kulkee kääntäjän läpi. Se toimii esiprosessorin komentorivin tai ohjeiden avulla. Ohjelmassa esiprosessorin käskyt sijoitetaan lähdeohjelmaan ennen pääohjelmaa. Ennen kuin lähdekoodi menee kääntäjän läpi, esiprosessori tarkistaa sen esiprosessoriohjeiden var alta. Esikäsittelyohjeissa on -symboli. Toisin kuin muut lausunnot, ne eivät pääty puolipisteeseen. Yksi esiprosessoridirektiivin tyyppi on makro. Yleensä makrot kirjoitetaan isoilla kirjaimilla.
Kuva 01: C++-ohjelma makroilla
Yllä olevan ohjelman mukaan rivit 3 ja 4 osoittavat makroja. Pinta-alaa laskettaessa PI-arvo korvataan määritetyllä makrolla. Rivillä 14 volyymi=CUBE(arvo), esiprosessori laajentaa käskyn muodossa volume=(arvoarvoarvo). Kuution löytäminen voidaan kirjoittaa funktiona, mutta tässä se kirjoitetaan makron avulla. Jos käsky on tilavuus=CUBE(x+y), se laajenee tilavuudeksi=(x+yx+yx+y).
Jotkin ohjelmointitunnukset saattavat helposti kirjoitettu väärin. Ne voidaan korvata makrojen avulla. esim. define AND &&, define OR ||. Makromäärittely voi sisältää myös lausekkeita, kuten define AREA 45.56.
Mikä on Inline Function?
Kun funktiota kutsutaan, kääntäjällä kestää jonkin aikaa sen suorittamiseen. Jos funktio ei ole kovin monimutkainen, ohjelmoija voi muuntaa funktion inline-funktioksi. Katso alla olevaa ohjelmaa.
Kuva 02: Toiminto ilman riviä
Print_hello on yksinkertainen toiminto. Se tulostaa merkkijonon "Hei", kun toimintoa kutsutaan. Toiminnon suoritusaika on 0,187 s. Kun käytät tekstin sisäistä avainsanaa seuraavasti, suoritusaika lyhenee 0,064 sekuntiin.
Kuva 03: Sisäänrakennettu toiminto
Siksi inline-avainsanaa käyttämällä suoritusaika lyhenee. Sisäiset funktiot eivät välttämättä toimi, jos niissä on silmukoita, kytkinkäskyjä ja jos funktio sisältää staattisia muuttujia tai rekursiivisia funktioita.
Mitä eroa makro- ja tekstitoiminnolla on?
Makro vs sisäinen toiminto |
|
Makro on koodinpätkä, joka on esiprosessorin käsky, joka sisältyy ohjelman alkuun, jota edeltää hash-merkki. | Sisäinen funktio on C++-parannusominaisuus, joka minimoi ohjelman suoritusajan. |
Arviointiaika | |
Makrossa argumentti arvioidaan aina, kun sitä käytetään ohjelmassa. | Sisäisessä rivissä argumentti arvioidaan kerran. |
Tarkastanut | |
Esiprosessori tarkistaa makron. | Kääntäjä tarkistaa rivin sisäisen funktion. |
Avainsana | |
Marco käyttää define. | Inline-funktio käyttää avainsanaa "inline". |
Käyttö | |
Makroa voidaan käyttää vakioiden, lausekkeiden, kirjaimellisen tekstin korvaamiseen ja funktioiden määrittämiseen jne. | Inline-funktiota voidaan käyttää minimoimaan ohjelman suoritusaika. |
Päättäminen | |
Makro päättyy uuteen riviin. | Sisäinen toiminto päättyy a altosulkeeseen rivin funktion lopussa. |
Määrittelypiste | |
A Marco määritellään ohjelman alussa. | Sisäinen funktio voi olla luokan sisällä tai sen ulkopuolella. |
Yhteenveto – Makro vs upotettu toiminto
Tässä artikkelissa käsiteltiin makron ja sisäisten toimintojen välistä eroa. Näitä käsitteitä käytetään C++-ohjelmoinnissa. Ero makron ja sisäisten funktioiden välillä on, että esiprosessori tarkistaa makron, kun taas kääntäjä tarkistaa inline-funktion.