Makro ir tiesioginės funkcijos skirtumas

Turinys:

Makro ir tiesioginės funkcijos skirtumas
Makro ir tiesioginės funkcijos skirtumas

Video: Makro ir tiesioginės funkcijos skirtumas

Video: Makro ir tiesioginės funkcijos skirtumas
Video: Difference between Macro and Function in C | Macro vs Function in C Programming [Hindi] 2024, Liepa
Anonim

Pagrindinis skirtumas – makrokomandos ir įterptoji funkcija

Makrokomandas yra kodo fragmentas, kuris yra išankstinio procesoriaus direktyva. Inline funkcija yra C++ patobulinimo funkcija, skirta sutrumpinti programos vykdymo laiką. Todėl pagrindinis skirtumas tarp makrokomandos ir įterptosios funkcijos yra tas, kad makrokomandą tikrina išankstinis procesorius, o eilutę – kompiliatorius.

Makrokomandos yra įtrauktos į programos pradžią, prieš kurią yra maišos ženklas. Kai programoje yra makrokomandos pavadinimas, jis pakeičiamas makrokomandos turiniu.

Kas yra makrokomandos?

Išankstinis procesorius yra programa, kuri apdoroja š altinio kodą prieš jam pereinant per kompiliatorių. Jis veikia naudodamas išankstinio procesoriaus komandinę eilutę arba direktyvas. Programoje pirminio procesoriaus direktyvos dedamos į š altinio programą prieš pagrindinę programą. Prieš š altinio kodui pereinant per kompiliatorių, pirminis procesorius patikrina, ar nėra pirminio procesoriaus nurodymų. Pirminio procesoriaus nurodymai turisimbolį. Skirtingai nuo kitų teiginių, jie nesibaigia kabliataškiu. Viena iš pirminio procesoriaus direktyvų tipų yra makrokomandos. Paprastai makrokomandos rašomos didžiosiomis raidėmis.

Skirtumas tarp makrokomandos ir tiesioginės funkcijos
Skirtumas tarp makrokomandos ir tiesioginės funkcijos

01 pav.: C++ programa su makrokomandomis

Pagal pirmiau pateiktą programą, 3 ir 4 eilutės nurodo makrokomandas. Skaičiuojant plotą, PI reikšmė pakeičiama naudojant apibrėžtą makrokomandą. 14 eilutėje volume=CUBE(value), išankstinis procesorius išplečia teiginį kaip volume=(reikšmėreikšmėreikšmė). Kubo radimas gali būti parašytas kaip funkcija, tačiau čia jis parašytas naudojant makrokomandą. Jei yra teiginys, kaip tūris=CUBE(x+y), tada jis išsiplės iki tomas=(x+yx+yx+y).

Kai kurie programavimo prieigos raktai gali būti lengvai įvesti klaidingai. Juos galima pakeisti naudojant makrokomandas. pvz. define AND &&, define OR ||. Makrokomandos apibrėžimas taip pat gali apimti tokias išraiškas kaip define AREA 45.56.

Kas yra eilutės funkcija?

Kai funkcija iškviečiama, kompiliatorius užtrunka šiek tiek laiko ją vykdyti. Jei funkcija nėra labai sudėtinga, programuotojas gali konvertuoti funkciją į tiesioginę funkciją. Žiūrėkite toliau pateiktą programą.

Skirtumas tarp makrokomandos ir tiesioginės funkcijos_2 pav
Skirtumas tarp makrokomandos ir tiesioginės funkcijos_2 pav

02 pav. Funkcija be eilės

Print_hello yra paprasta funkcija. Iškviečiant funkciją, ji išspausdina eilutę „Labas“. Šios funkcijos vykdymo laikas yra 0,187 s. Naudojant įterptinį raktinį žodį, kaip nurodyta, vykdymo laikas sutrumpėja iki 0,064 s.

Pagrindinis skirtumas tarp makrokomandos ir tiesioginės funkcijos
Pagrindinis skirtumas tarp makrokomandos ir tiesioginės funkcijos

03 pav.: eilutinė funkcija

Todėl, naudojant įterptinį raktinį žodį, vykdymo laikas sutrumpėja. Įterptinės funkcijos gali neveikti, jei yra kilpų, perjungimo sakinių ir jei funkcijoje yra statinių kintamųjų arba rekursinių funkcijų.

Kuo skiriasi makrokomandos ir eilutės funkcijos?

Makrokomandos prieš eilutę funkciją

Makrokomandas yra kodo fragmentas, kuris yra išankstinio procesoriaus direktyva, įtraukta į programos pradžią, prieš kurią yra maišos ženklas. Inline funkcija yra C++ patobulinimo funkcija, skirta sutrumpinti programos vykdymo laiką.
Vertinimo laikas
Makrokomandoje argumentas įvertinamas kiekvieną kartą, kai jis naudojamas programoje. Eilėje argumentas įvertinamas vieną kartą.
Patikrino
Makrokomandą patikrina išankstinis procesorius. Inline funkciją patikrina kompiliatorius.
Raktinis žodis
Marco naudoja define. Inline funkcija naudoja raktinį žodį „inline“.
Naudojimas
Makrokomandą galima naudoti norint apibrėžti konstantas, išraiškas, pakeisti pažodinį tekstą ir apibrėžti funkcijas ir pan. Galima naudoti eilutę funkciją, kad būtų sumažintas programos vykdymo laikas.
Nutraukimas
Makrokomandas baigiasi nauja eilute. Inline funkcija baigiasi lenktu skliaustu įterptosios funkcijos pabaigoje.
Apibrėžimo taškas
A Marco apibrėžiamas programos pradžioje. Inline funkcija gali būti klasėje arba už jos ribų.

Santrauka – makrokomandos ir įterptoji funkcija

Šiame straipsnyje aptariamas makrokomandos ir įterptosios funkcijos skirtumas. Šios sąvokos naudojamos programuojant C++. Skirtumas tarp makrokomandos ir įterptosios funkcijos yra tas, kad makrokomandą tikrina išankstinis procesorius, o eilutę – kompiliatorius.

Rekomenduojamas: