Kľúčový rozdiel – Makro a vložená funkcia
Makro je fragment kódu, ktorý je príkazom preprocesora. Inline funkcia je vylepšená funkcia C++ na minimalizáciu času vykonávania programu. Kľúčový rozdiel medzi makro a inline funkciou je teda ten, že makro kontroluje preprocesor, zatiaľ čo inline funkciu kontroluje kompilátor.
Makro je zahrnuté na začiatku programu, pred ktorým je znak hash. Ak je v programe názov makra, nahradí sa obsahom makra.
Čo je makro?
Preprocesor je program, ktorý spracováva zdrojový kód predtým, ako prejde kompilátorom. Funguje pomocou príkazového riadku preprocesora alebo direktív. V programe sú smernice preprocesora umiestnené v zdrojovom programe pred hlavným programom. Predtým, ako zdrojový kód prejde kompilátorom, preprocesor ho skontroluje, či neobsahuje direktívy preprocesora. Direktívy preprocesora majú symbol. Na rozdiel od iných tvrdení nekončia bodkočiarkou. Jedným typom direktívy preprocesora je makro. Vo všeobecnosti sa makrá píšu veľkými písmenami.
Obrázok 01: Program v C++ s makrami
Podľa vyššie uvedeného programu riadok 3 a riadok 4 označuje makrá. Pri výpočte plochy sa hodnota PI nahradí pomocou definovaného makra. V riadku 14, objem=CUBE(hodnota), preprocesor rozšíri príkaz ako objem=(hodnotahodnotahodnota). Nájdenie kocky môže byť zapísané ako funkcia, ale tu sa zapisuje pomocou makra. Ak existuje výrok ako objem=CUBE(x+y), potom sa rozšíri na objem=(x+yx+yx+y).
Niektoré programovacie tokeny môžu byť ľahko nesprávne zadané. Môžu byť nahradené pomocou makier. napr. define AND &&, define OR ||. Definícia makra môže obsahovať aj výrazy ako define AREA 45.56.
Čo je vložená funkcia?
Pri volaní funkcie trvá kompilátoru nejaký čas, kým ju vykoná. Ak funkcia nie je príliš zložitá, programátor môže previesť funkciu na inline funkciu. Pozrite si program nižšie.
Obrázok 02: Funkcia bez vloženia
print_hello je jednoduchá funkcia. Pri volaní funkcie vypíše reťazec „Ahoj“. Čas vykonania tejto funkcie je 0,187 s. Pri použití vloženého kľúčového slova nasledujúcim spôsobom sa čas vykonania skráti na 0,064 s.
Obrázok 03: Vložená funkcia
Používaním vloženého kľúčového slova sa teda skracuje čas vykonania. Vložené funkcie nemusia fungovať, ak existujú slučky, príkazy switch a ak funkcia obsahuje statické premenné alebo rekurzívne funkcie.
Aký je rozdiel medzi makro a inline funkciou?
Makro vs vložená funkcia |
|
Makro je fragment kódu, čo je direktíva preprocesora, ktorá je zahrnutá na začiatku programu, pred ktorým je znak hash. | Vložená funkcia je funkcia vylepšenia C++, ktorá minimalizuje čas vykonávania programu. |
Čas hodnotenia | |
V makre sa argument vyhodnocuje pri každom použití v programe. | Inline sa argument vyhodnotí raz. |
Skontroloval | |
Preprocesor kontroluje makro. | Vložená funkcia je kontrolovaná kompilátorom. |
Kľúčové slovo | |
Marco používa define. | Vložená funkcia používa kľúčové slovo „inline“. |
Použitie | |
Makro možno použiť na definovanie konštánt, výrazov, na nahradenie doslovného textu a na definovanie funkcií atď. | Inline funkciu možno použiť na minimalizáciu času vykonávania programu. |
Ukončenie | |
Makro sa končí novým riadkom. | Vložená funkcia sa končí zloženou zátvorkou na konci vnorenej funkcie. |
Definujúci bod | |
Na začiatku programu je definovaný Marco. | Vložená funkcia môže byť v triede alebo mimo nej. |
Zhrnutie – Makro verzus inline funkcia
Tento článok diskutoval o rozdieloch medzi makro a inline funkciou. Tieto koncepty sa používajú v programovaní v C++. Rozdiel medzi makro a vnorenou funkciou je v tom, že makro kontroluje preprocesor, zatiaľ čo inline funkciu kontroluje kompilátor.