Forskellen mellem Inline og Macro i C ++
Indhold
Makro er en instruktion, der udvides på tidspunktet for dens påkaldelse. Funktioner kan også defineres som makroer. Tilsvarende udvides inline-funktionerne også på tidspunktet for dens påkaldelse. En primær forskel mellem inline- og makrofunktion er, at inline funktioner udvides i løbet af samling, og makroer udvides, når programmet behandles af præprocessor.
Lad os undersøge forskellen mellem inline og makro ved hjælp af sammenligningstabel.
- Sammenligningstabel
- Definition
- Vigtige forskelle
- Konklusion
Sammenligningstabel
Grundlag for sammenligning | Inline | Makro |
---|---|---|
Grundlæggende | Inline-funktioner analyseres af compileren. | Makroer udvides med forbehandleren. |
Syntaks | inline return_type funktionsnavn (parametre) {. . . } | #definer makro_navn char_sequence |
Brugte søgeord | inline | #Definere |
defineret | Det kan defineres i eller uden for klassen. | Det defineres altid i starten af programmet. |
Evaluering | Det evaluerer argumentet kun én gang. | Det evaluerer argumentet, hver gang det bruges i koden. |
Udvidelse | Compileren kan muligvis ikke inline og udvide alle funktionerne. | Makroer udvides altid. |
Automatisering | De korte funktioner, der er defineret i klassen, oprettes automatisk til inline-funktioner. | Makroer skal defineres specifikt. |
Adgang | En inline medlemsfunktion kan få adgang til klassens datamedlemmer. | Makroer kan aldrig være klassemedlemmer og har ikke adgang til klassens datamedlemmer. |
Afslutning | Definition af inline-funktion afsluttes med de krøllede konsoller i slutningen af inline-funktionen. | Definition af makro afsluttes med den nye linje. |
Fejlfinding | Fejlsøgning er let for en inline-funktion, da fejlkontrol udføres under kompilering. | Fejlsøgning bliver vanskelig for makroer, da fejlkontrol ikke forekommer under kompilering. |
Binding | En inline-funktion binder alle udsagn i funktionens krop meget godt, som funktionen af kroppen starter og slutter med de krøllede parenteser. | En makro står overfor bindingsproblemet, hvis den har mere end én påstand, da den ikke har noget afslutningsymbol. |
Definition af inline
En inline-funktion ligner en almindelig funktion, men er efterfulgt af nøgleordet "inline”. Inline-funktioner er kortlængdefunktioner, der udvides på tidspunktet for dens påkaldelse i stedet for at blive kaldt. Lad os forstå inline-funktioner med et eksempel.
#omfatte I ovenstående program erklærede og definerede jeg funktionen initialiseret () som en inline funktion i klassen “eksempel”. Koden til initialiseringsfunktionen () udvides, hvor den påberåbes af objektet for klassen “eksempel”. Funktionsdisplayet (), der er defineret i klasseeksemplet, erklæres ikke inline, men det kan betragtes som inline af kompilatoren, som i C ++ foretages funktionen, der er defineret i klassen, automatisk inline af kompilatoren i betragtning af funktionens længde. Makro er et "forarbejdningsdirektiv". Før kompilering undersøges programmet af forbehandleren, og når det nogensinde finder makroen i programmet, erstatter det makroen med dens definition. Derfor betragtes makroen som "erstatning". Lad os studere makro med et eksempel. #omfatte I ovenstående kode erklærede jeg en makrofunktion GREATER (), der sammenligner og finder det større antal af begge parametre. Du kan observere, at der ikke er noget semikolon til at afslutte makroen, da makroen kun afsluttes med den nye linje. Da en makro bare er en erstatning, udvider den makrokoden, hvor den påberåbes. Inline-funktionerne er langt mere overbevisende end makrofunktion. C ++ giver også en bedre måde at definere en konstant, der bruger et "const" nøgleord.
Definition af makro
konklusioner: