Rozdíl mezi makrem a funkcí Inline

Obsah:

Rozdíl mezi makrem a funkcí Inline
Rozdíl mezi makrem a funkcí Inline

Video: Rozdíl mezi makrem a funkcí Inline

Video: Rozdíl mezi makrem a funkcí Inline
Video: Makra v Excelu - Deklarace proměnné 2024, Červenec
Anonim

Klíčový rozdíl – Makro a vložená funkce

Makro je fragment kódu, který je direktivou preprocesoru. Inline funkce je funkce vylepšení C++, která minimalizuje dobu provádění programu. Klíčový rozdíl mezi makrem a inline funkcí je tedy ten, že makro je kontrolováno preprocesorem, zatímco inline funkce je kontrolována kompilátorem.

Makro je zahrnuto na začátku programu, před kterým je znak hash. Pokud je v programu název makra, je nahrazen obsahem makra.

Co je makro?

Preprocesor je program, který zpracovává zdrojový kód před tím, než projde kompilátorem. Funguje pomocí příkazového řádku preprocesoru nebo direktiv. V programu jsou direktivy preprocesoru umístěny ve zdrojovém programu před hlavním programem. Než zdrojový kód projde kompilátorem, zkontroluje jej preprocesor, zda neobsahuje direktivy preprocesoru. Direktivy preprocesoru mají symbol. Na rozdíl od jiných tvrzení nekončí středníkem. Jedním typem direktivy preprocesoru je makro. Obecně se makra píší velkými písmeny.

Rozdíl mezi makrem a funkcí Inline
Rozdíl mezi makrem a funkcí Inline

Obrázek 01: Program v C++ s makry

Podle výše uvedeného programu značí řádek 3 a řádek 4 makra. Při výpočtu plochy je hodnota PI nahrazena pomocí definovaného makra. Na řádku 14, volume=CUBE(hodnota), preprocesor rozbalí příkaz jako volume=(hodnotahodnotahodnota). Hledání krychle lze zapsat jako funkci, ale zde se zapisuje pomocí makra. Pokud existuje příkaz jako objem=CUBE(x+y), pak se rozšíří na objem=(x+yx+yx+y).

Některé programovací tokeny mohou být snadno špatně zadané. Lze je nahradit pomocí maker. např. define AND &&, define NEBO ||. Definice makra může také obsahovat výrazy jako define AREA 45.56.

Co je funkce Inline?

Když je funkce volána, kompilátoru nějakou dobu trvá, než ji vykoná. Pokud funkce není příliš složitá, může programátor převést funkci na inline funkci. Viz níže uvedený program.

Rozdíl mezi makrem a vloženou funkcí_Obrázek 2
Rozdíl mezi makrem a vloženou funkcí_Obrázek 2

Obrázek 02: Funkce bez vložení

print_hello je jednoduchá funkce. Při volání funkce vypíše řetězec „Ahoj“. Doba provedení této funkce je 0,187 s. Při použití vloženého klíčového slova následujícím způsobem se doba provedení zkrátí na 0,064 s.

Klíčový rozdíl mezi makrem a funkcí Inline
Klíčový rozdíl mezi makrem a funkcí Inline

Obrázek 03: Inline Function

Použitím klíčového slova inline se tedy doba provádění zkracuje. Vložené funkce nemusí fungovat, pokud existují smyčky, příkazy switch a pokud funkce obsahuje statické proměnné nebo rekurzivní funkce.

Jaký je rozdíl mezi makrem a funkcí Inline?

Makro vs vložená funkce

Makro je fragment kódu, což je direktiva preprocesoru, která je zahrnuta na začátku programu, před kterým je znak hash. Vložená funkce je funkce vylepšení C++, která minimalizuje dobu provádění programu.
Čas vyhodnocení
V makru je argument vyhodnocen pokaždé, když je v programu použit. Inline je argument vyhodnocen jednou.
Zkontrolováno
Preprocesor kontroluje makro. Vložená funkce je kontrolována kompilátorem.
Klíčové slovo
Marco používá define. Funkce inline používá klíčové slovo ‚inline‘.
Použití
Makro lze použít k definování konstant, výrazů, k doslovnému nahrazování textu a k definování funkcí atd. K minimalizaci doby provádění programu lze použít inline funkci.
Ukončení
Makro končí s novým řádkem. Vložená funkce končí složenou závorkou na konci vložené funkce.
Definující bod
Na začátku programu je definován Marco. Vložená funkce může být uvnitř nebo mimo třídu.

Shrnutí – Makro vs. funkce Inline

Tento článek pojednával o rozdílu mezi makrem a funkcí Inline. Tyto pojmy se používají v programování v C++. Rozdíl mezi makrem a inline funkcí je v tom, že makro kontroluje preprocesor, zatímco inline funkci kontroluje kompilátor.

Doporučuje: