Ključna razlika – Makro nasuprot ugrađenoj funkciji
Makro je fragment koda, koji je direktiva pretprocesora. Ugrađena funkcija značajka je poboljšanja C++-a za smanjenje vremena izvođenja programa. Stoga je ključna razlika između makronaredbe i ugrađene funkcije u tome što makronaredbu provjerava predprocesor, dok ugrađenu funkciju provjerava kompajler.
Makronaredba je uključena na početku programa ispred koje stoji znak hash. Kada u programu postoji naziv makronaredbe, ono se zamjenjuje sadržajem makronaredbe.
Što je Makro?
Pretprocesor je program koji obrađuje izvorni kod prije nego što prođe kroz kompajler. Radi pomoću naredbenog retka pretprocesora ili direktiva. U programu su upute pretprocesora smještene u izvorni program prije glavnog programa. Prije nego što izvorni kod prođe kroz kompilator, pretprocesor ga provjerava za direktive pretprocesora. Direktive pretprocesora imaju simbol. Za razliku od drugih iskaza, oni ne završavaju točkom i zarezom. Jedna vrsta direktive pretprocesora je makro. Općenito, makronaredbe se pišu velikim slovima.
Slika 01: C++ program s makronaredbama
Prema gornjem programu, linija 3 i linija 4 označavaju makronaredbe. Prilikom izračuna površine, vrijednost PI zamjenjuje se definiranom makronaredbom. U retku 14, volume=CUBE(vrijednost), predprocesor proširuje iskaz kao volumen=(vrijednostvrijednostvrijednost). Pronalaženje kocke može se napisati kao funkcija, ali ovdje je zapisano pomoću makronaredbe. Ako postoji izjava kao volumen=KOCKA(x+y), tada će se proširiti na volumen=(x+yx+yx+y).
Neki programski tokeni lako se mogu pogrešno upisati. Mogu se zamijeniti pomoću makronaredbi. npr. definiraj I &&, definiraj ILI ||. Makro definicija također može uključivati izraze kao što je define AREA 45.56.
Što je Inline funkcija?
Kada se funkcija pozove, kompajleru treba neko vrijeme da je izvrši. Ako funkcija nije vrlo složena, programer je može pretvoriti u ugrađenu funkciju. Pogledajte donji program.
Slika 02: Funkcija bez Inline
print_hello je jednostavna funkcija. Ispisuje niz "Hello" kada se funkcija pozove. Vrijeme izvršenja te funkcije je 0,187 s. Kada koristite ugrađenu ključnu riječ kako slijedi, vrijeme izvršenja se smanjuje na 0,064 s.
Slika 03: Inline funkcija
Stoga, korištenjem inline ključne riječi, vrijeme izvršenja se smanjuje. Inline funkcije možda neće raditi ako postoje petlje, switch naredbe i ako funkcija sadrži statičke varijable ili rekurzivne funkcije.
Koja je razlika između makronaredbe i ugrađene funkcije?
Makro nasuprot ugrađenoj funkciji |
|
Makro je fragment koda, koji je direktiva pretprocesora koja je uključena na početku programa ispred kojega se nalazi hash. | Ugrađena funkcija je C++ značajka poboljšanja za smanjenje vremena izvođenja programa. |
Vrijeme evaluacije | |
U makronaredbi, argument se procjenjuje svaki put kada se koristi u programu. | U inline-u, argument se procjenjuje jednom. |
Provjerio | |
Makronaredbu provjerava predprocesor. | Inline funkciju provjerava kompajler. |
Ključna riječ | |
Marco koristi define. | Inline funkcija koristi ključnu riječ 'inline'. |
Upotreba | |
Makro se može koristiti za definiranje konstanti, izraza, za doslovnu zamjenu teksta i za definiranje funkcija itd. | Ugrađena funkcija može se koristiti za smanjenje vremena izvođenja programa. |
Raskid | |
Makro završava s novom linijom. | Umetnuta funkcija završava vitičastom zagradom na kraju umetnute funkcije. |
Definirajuća točka | |
Marco je definiran na početku programa. | Inline funkcija može biti unutar ili izvan klase. |
Sažetak – Makro nasuprot ugrađenoj funkciji
Ovaj članak govori o razlici između makronaredbe i ugrađene funkcije. Ovi koncepti se koriste u C++ programiranju. Razlika između makronaredbe i ugrađene funkcije je u tome što makronaredbu provjerava predprocesor, dok ugrađenu funkciju provjerava kompajler.