Skillnaden mellan inline och makro i C ++
Innehåll
Makro är en instruktion som expanderar vid tidpunkten för invigningen. Funktioner kan också definieras, som makron. På liknande sätt expanderar inlinefunktionerna också vid den tidpunkt då den kallas. En primär skillnad mellan inline- och makrofunktion är att inline-funktioner utvidgas under kompilering, och den makron utvidgas när programmet bearbetas av förprocessorn.
Låt oss studera skillnaden mellan inline och makro med hjälp av jämförelsediagram.
- Jämförelsediagram
- Definition
- Viktiga skillnader
- Slutsats
Jämförelsediagram
Grund för jämförelse | I kö | Makro |
---|---|---|
Grundläggande | Inline-funktioner analyseras av kompilatorn. | Makron utvidgas av förprocessorn. |
Syntax | inline return_type funct_name (parametrar) {. . . } | #definiera makronamn char_sequence |
Använda nyckelord | i kö | #definiera |
Definierat | Det kan definieras inom eller utanför klassen. | Det definieras alltid i början av programmet. |
Utvärdering | Den utvärderar argumentet endast en gång. | Den utvärderar argumentet varje gång det används i koden. |
Expansion | Kompilatorn kanske inte inline och utvidgar alla funktioner. | Makron utvidgas alltid. |
Automatisering | De korta funktionerna, definierade i klassen, görs automatiskt på inline-funktioner. | Makron bör definieras specifikt. |
Åtkomst | En inline-medlemfunktion kan komma åt klassmedlemmarnas medlemmar. | Makron kan aldrig vara medlemmar i klassen och kan inte komma åt klassmedlemmarna. |
Uppsägning | Definition av inline-funktion avslutas med de lockiga parenteserna i slutet av inline-funktionen. | Definition av makro avslutas med den nya raden. |
felsökning | Felsökning är lätt för en inline-funktion eftersom felkontroll görs under sammanställningen. | Felsökning blir svårt för makron eftersom felkontroll inte sker under sammanställningen. |
Bindning | En inline-funktion binder alla påståenden i kroppens funktion mycket väl som funktionen av kroppen startar och slutar med de lockiga parenteserna. | Ett makro står inför bindningsproblemet om det har mer än ett uttalande, eftersom det inte har någon avslutande symbol. |
Definition av inline
En inline-funktion ser ut som en vanlig funktion men föregås av nyckelordet "i kö”. Inlinefunktioner är korta längdfunktioner som utvidgas vid tidpunkten för dess kallelse istället för att kallas. Låt oss förstå inline-funktioner med ett exempel.
#inkludera I ovanstående program förklarade och definierade jag, funktionen initialiseras (), som en inline-funktion i klassen "exempel". Koden för initieringsfunktionen () kommer att utvidgas där den åberopas av objektet för klassen "exempel". Funktionsdisplayen (), definierad i klassexemplet förklaras inte inline men den kan betraktas som inline av kompilatorn, som i C ++ görs funktionen som definieras i klassen automatiskt inline av kompilatorn med tanke på funktionens längd. Makro är ett ”förbehandlingsdirektiv”. Innan kompilering undersöks programmet av förprocessorn och när det hittas makro i programmet ersätter det makro med sin definition. Därför betraktas makroen som ”ersättningen”. Låt oss studera makro med ett exempel. #inkludera I ovanstående kod förklarade jag en makrofunktion GREATER (), som jämför och hittar det större antalet båda parametrarna. Du kan observera att det inte finns någon semikolon för att avsluta makroen eftersom makro endast avslutas av den nya raden. Eftersom ett makro bara är en ersättning, kommer den att utöka makrokoden där den åberopas. Inlinefunktionerna är mycket mer övertygande än makrofunktion. C ++ ger också ett bättre sätt att definiera en konstant, som använder ett "const" -sökord.
Definition av makro
Slutsatser: