Makro- ja rivifunktion ero

Sisällysluettelo:

Makro- ja rivifunktion ero
Makro- ja rivifunktion ero

Video: Makro- ja rivifunktion ero

Video: Makro- ja rivifunktion ero
Video: Michael Jackson - Smooth Criminal (Official Video) 2024, Marraskuu
Anonim

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.

Ero makro- ja rivifunktion välillä
Ero makro- ja rivifunktion välillä

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.

Ero makron ja upotetun funktion välillä_Kuva 2
Ero makron ja upotetun funktion välillä_Kuva 2

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.

Keskeinen ero makro- ja tekstitoimintojen välillä
Keskeinen ero makro- ja tekstitoimintojen välillä

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.

Suositeltava: