Rozdiel medzi makro a inline funkciou

Obsah:

Rozdiel medzi makro a inline funkciou
Rozdiel medzi makro a inline funkciou

Video: Rozdiel medzi makro a inline funkciou

Video: Rozdiel medzi makro a inline funkciou
Video: Экономика классов обслуживания в самолете 2024, November
Anonim

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.

Rozdiel medzi makro a inline funkciou
Rozdiel medzi makro a inline funkciou

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.

Rozdiel medzi makro a inline funkcia_obrázok 2
Rozdiel medzi makro a inline funkcia_obrázok 2

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.

Kľúčový rozdiel medzi makro a inline funkciou
Kľúčový rozdiel medzi makro a inline funkciou

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.

Odporúča: