Klíčový rozdíl - makro vs inline funkce
Makro je fragment kódu, což je direktiva preprocesoru. Vložená funkce je funkce vylepšení C ++, která minimalizuje dobu provádění programu. Klíčovým rozdílem mezi makrem a inline funkcí je tedy to, ž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.
OBSAH
1. Přehled a klíčový rozdíl
2. Co je to makro
3. Co je funkce Inline
4. Porovnání vedle sebe - funkce Makro vs Inline ve formě tabulky
5. Shrnutí
Co je to 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 směrnic. V programu jsou direktivy preprocesoru umístěny do zdrojového programu před hlavní program. Před tím, než zdrojový kód projde kompilátorem, je zkontrolován preprocesorem na direktivy preprocesoru. Direktivy preprocesoru mají symbol #. Na rozdíl od jiných příkazů nekončí středníkem. Jedním typem direktivy preprocesoru je makro. Makra jsou obecně psána velkými písmeny.
Obrázek 01: Program C ++ s makry
Podle výše uvedeného programu řádek 3 a řádek 4 označují makra. Při výpočtu plochy se hodnota PI nahradí pomocí definovaného makra. V řádku 14, volume = CUBE (hodnota), preprocesor rozšíří příkaz jako volume = (hodnota * hodnota * hodnota). Nalezení krychle lze zapsat jako funkci, ale zde se zapisuje pomocí makra. Pokud existuje příkaz jako volume = CUBE (x + y), rozbalí se na volume = (x + y * x + y * x + y).
Některé programovací tokeny mohou být snadno chybně napsány. Mohou být nahrazeny pomocí maker. např. #define AND &&, #define OR ||. Definice makra může také zahrnovat výrazy, jako například #define AREA 4 * 5.56.
Co je funkce Inline?
Při volání funkce kompilátoru trvá nějakou dobu, než ji provede. Pokud funkce není příliš složitá, může programátor převést funkci na vloženou funkci. Viz níže uvedený program.
Obrázek 02: Funkce bez vloženého řádku
Print_hello je jednoduchá funkce. Při volání funkce vytiskne řetězec „Hello“. Čas provedení pro tuto funkci je 0,187 s. Při použití inline klíčového slova následujícím způsobem se doba spuštění sníží na 0,064 s.
Obrázek 03: Inline funkce
Proto se pomocí inline klíčového slova snižuje doba provádění. 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 makro a vloženou funkcí?
Rozdílný článek uprostřed před tabulkou
Makro vs vložená funkce |
|
Makro je fragment kódu, což je direktiva preprocesoru, která je zahrnuta na začátku programu a před kterou 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 použit v programu. | V řádku je argument vyhodnocen jednou. |
Zkontrolováno | |
Makro je zkontrolováno preprocesorem. | Vložená funkce je zkontrolována kompilátorem. |
Klíčové slovo | |
Marco používá #define. | Funkce inline používá klíčové slovo „inline“. |
Používání | |
Makro lze použít k definování konstant, výrazů, k doslovnému nahrazení textu a k definování funkcí atd. | Vloženou funkci lze použít k minimalizaci doby provádění programu. |
Ukončení | |
Makro končí novým řádkem. | Inline funkce končí složenou závorkou na konci inline funkce. |
Definování bodu | |
Marco je definován na začátku programu. | Vložená funkce může být uvnitř nebo vně třídy. |
Shrnutí - Funkce Makro vs Inline
Tento článek pojednával o rozdílech mezi makry a vloženými funkcemi. Tyto koncepty se používají v programování v C ++. Rozdíl mezi funkcí makro a vložená funkce spočívá v tom, že makro je kontrolováno preprocesorem, zatímco vložená funkce je kontrolována kompilátorem.