Különbség az inline és a makró között a C ++-ban
Tartalom
A makró olyan utasítás, amely kibővül a meghívásakor. Funkciók is meghatározhatók, mint például a makrók. Hasonlóképpen, a beépített funkciók szintén kibővülnek hívásuk pillanatában. Az elsődleges különbség az inline és a makrofunkció között az, hogy a inline funkciók kibővítés alatt összeállítás, és a makrók kibővülnek, amikor a program feldolgozza a preprocessor.
Vizsgáljuk meg az inline és a makró közötti különbséget összehasonlító diagram segítségével.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Sorban | Macro |
---|---|---|
Alapvető | A belső funkciókat a fordító elemzi. | A makrókat az előfeldolgozó bővíti. |
Szintaxis | inline return_type funct_name (paraméterek) {. . . } | #define macro_name char_sequence |
Használt kulcsszavak | Sorban | #define |
Meghatározott | Meg lehet határozni az osztályon belül vagy kívül. | Ezt mindig a program elején definiálják. |
Értékelés | Az érvet csak egyszer értékeli. | Az argumentumot minden egyes alkalommal kiértékeli, amikor azt a kódban felhasználják. |
Terjeszkedés | Lehet, hogy a fordító nem vonja be és bővíti az összes funkciót. | A makrók mindig bővülnek. |
Automatizálás | Az osztályon belül meghatározott rövid funkciók automatikusan beépülnek az inline funkciókba. | A makrókat külön meg kell határozni. |
Hozzáférés | Az inline tag funkció hozzáférhet az osztály adattagjaihoz. | A makrók soha nem lehetnek az osztály tagjai, és nem férhetnek hozzá az osztály adatainak. |
befejezés | Az inline funkció meghatározása a göndör zárójelekkel az inline funkció végén ér véget. | A makró meghatározása az új sorral befejeződik. |
Hibakeresés | A hibakeresés a beépített funkciók számára egyszerű, mivel a hibaellenőrzést az összeállítás során hajtják végre. | A hibakeresés a makrók számára nehezebbé válik, mivel a hibaellenőrzés nem fordul elő a fordítás során. |
Kötés | A beépített függvény nagyon jól összekapcsolja a függvény testében szereplő összes állítást, a függvény törzse pedig a göndör zárójelekkel kezdődik és végződik. | A makró akkor néz szembe a kötési problémával, ha egynél több utasításból áll, mivel nincs befejezési szimbóluma. |
Az Inline meghatározása
Az inline függvény úgy néz ki, mint egy normál függvény, de ezt megelőzi a „Sorban„. Az inline függvények rövid hosszúságú függvények, amelyek meghívásuk helyén kibővülnek, és nem hívják őket. Megértjük a beépített funkciókat egy példával.
#include A fenti programban az inicializáló () függvényt deklaráltam és definiáltam, mint egy inline függvényt a „példa” osztályban. Az inicializáló () függvény kódja kibővül, ahol ráhívja a „példa” osztály tárgya. Az osztálypéldában meghatározott funkciókijelzőt () nem deklarálják inline-ként, de a fordító úgy tekintheti inline-ra, mint a C ++ kategóriában az osztályon belül definiált függvényt a fordító automatikusan sorba hozza, figyelembe véve a függvény hosszát. A makró egy „előfeldolgozókról szóló irányelv”. Az összeállítás előtt a programot megvizsgálja az előfeldolgozó, és ha megtalálja a makrót a programban, akkor helyettesíti azt a definícióval. Ezért a makrót „pótlásnak” tekintik. Vizsgáljuk meg a makrót egy példával. #include A fenti kódban egy GREATER () makrofunkciót deklaráltam, amely összehasonlítja és megtalálja mindkét paraméter nagyobb számát. Megfigyelheti, hogy nincs pontosvessző a makró lezárására, mivel a makrót csak az új sor végzi. Mivel a makró csak pótlás, kibővíti a makró kódját, ahol meghívják. Az inline funkciók sokkal meggyőzőbbek, mint a makrofunkciók. A C ++ jobb módszert kínál egy állandó meghatározására, amely egy „const” kulcsszót használ.
A makró meghatározása
Következtetések: