Ero rivin ja makron välillä C ++: ssa
Sisältö
Makro on ohje, joka laajenee kutsuttaessaan. Toiminnot voidaan myös määritellä, kuten makroja. Samoin inline-toiminnot laajentuvat myös kutsumisessaan. Yksi ensisijainen ero inline- ja makrofunktion välillä on, että sisäiset toiminnot laajennetaan vuoden aikana kokoelma, ja makrot laajennetaan, kun ohjelma käsittelee ohjelmaa preprocessor.
Tarkastellaan rivin ja makron eroa vertailukaavion avulla.
- Vertailutaulukko
- Määritelmä
- Keskeiset erot
- johtopäätös
Vertailutaulukko
Vertailun perusteet | Linjassa | makro |
---|---|---|
perustiedot | Kääntäjä jäsentää sisäiset toiminnot. | Esiprosessori laajentaa makroja. |
Syntaksi | inline return_type funct_name (parametrit) {. . . } | #define macro_name char_sequence |
Käytetyt avainsanat | linjassa | #määritellä |
määritellyt | Se voidaan määritellä luokan sisällä tai ulkopuolella. | Se määritetään aina ohjelman alussa. |
arviointi | Se arvioi väitteen vain kerran. | Se arvioi argumentin joka kerta, kun sitä käytetään koodissa. |
laajeneminen | Kääntäjä ei välttämättä sisällä kaikkia toimintoja ja laajentaa niitä. | Makroja laajennetaan aina. |
automaatio | Luokan sisällä määritellyt lyhyet toiminnot tehdään automaattisesti inline-toimintoiksi. | Makrot tulisi määritellä erityisesti. |
pääsy | Inline-jäsentoiminto voi käyttää luokan datajäseniä. | Makrot eivät voi koskaan olla luokan jäseniä eivätkä pääse luokan tietojäseniin. |
päättyminen | Inline-toiminnon määritelmä päättyy kiharakiinnikkeillä inline-toiminnon lopussa. | Makron määritelmä päättyy uudella rivillä. |
virheenkorjaus | Virheenkorjaus on helppo integroidulle toiminnolle, koska virheentarkistus tehdään kokoamisen aikana. | Virheenkorjauksesta tulee vaikeaa makroilla, koska virheentarkistusta ei tapahdu käännöksen aikana. |
sitova | Inline-funktio sitoo kaikki funktion rungon lauseet erittäin hyvin, koska funktion runko alkaa ja päättyy kiharaan. | Makro kohtaa sidontaongelman, jos sillä on useampi kuin yksi lause, koska siinä ei ole lopetussymbolia. |
Määritelmä Inline
Inline-funktio näyttää tavalliselta funktiolta, mutta sitä edeltää avainsana “linjassa”. Inline-toiminnot ovat lyhyen pituisia funktioita, joita laajennetaan sen kutsumishetkellä kutsumisen sijasta. Ymmärretään sisäiset toiminnot esimerkillä.
#sisältää Yllä olevassa ohjelmassa ilmoitin ja määrittelin funktion alustaa () luokan ”esimerkki” rivitoimintoksi. Alustus () -toiminnon koodi laajenee, kun luokan "esimerkki" kohde sitä kutsuu. Luokan esimerkissä määriteltyä toimintanäyttöä () ei ilmoiteta inline: ksi, mutta kääntäjä voi pitää sitä inline: C ++: ssa luokan sisällä määritelty toiminto tehdään kääntäjälle automaattisesti integroituna funktion pituuden mukaan. Makro on ”esikäsittelydirektiivi”. Ennen kompilointia esikäsittelijä tutkii ohjelman ja aina kun se löytää makron ohjelmasta, se korvaa sen makro määritelmällä. Siksi makroa pidetään ”korvaavana”. Tutkitaan makro esimerkillä. #sisältää Yllä olevassa koodissa ilmoitin makrofunktion GREATER (), joka vertaa ja löytää suuremman määrän molempia parametreja. Voit huomata, että makron lopettamiseen ei ole puolipistettä, koska makro lopetetaan vain uudella rivillä. Koska makro on vain korvike, se laajentaa makron koodia, johon se otetaan käyttöön. Inline-toiminnot ovat paljon vakuuttavampia kuin makro-funktiot. C ++ tarjoaa myös paremman tavan määritellä vakio, joka käyttää “const” -sanaa.
Määritelmä Makro
johtopäätökset: