Verschil tussen inline en macro in C ++
Inhoud
Macro is een instructie die wordt uitgebreid op het moment van aanroep. Functies kunnen ook worden gedefinieerd, zoals macro's. Evenzo breiden de inline-functies zich ook uit op het moment van aanroep. Een belangrijk verschil tussen de inline- en macrofunctie is dat de inline functies worden uitgebreid tijdens compilatie, en de macros worden uitgebreid wanneer het programma wordt verwerkt door de preprocessor.
Laten we het verschil tussen inline en macro bestuderen met behulp van een vergelijkingstabel.
- Vergelijkingstabel
- Definitie
- Belangrijkste verschillen
- Gevolgtrekking
Vergelijkingstabel
Basis voor vergelijking | In lijn | macro |
---|---|---|
basis- | Inline-functies worden geparseerd door de compiler. | Macro's worden uitgebreid door de preprocessor. |
Syntaxis | inline return_type funct_name (parameters) {. . . } | #define macro_naam char_sequence |
Gebruikte zoekwoorden | in lijn | #bepalen |
Gedefinieerd | Het kan binnen of buiten de klas worden gedefinieerd. | Het wordt altijd gedefinieerd aan het begin van het programma. |
evaluatie | Het evalueert het argument slechts eenmaal. | Het evalueert het argument telkens wanneer het in de code wordt gebruikt. |
Uitbreiding | De compiler is mogelijk niet inline en breidt alle functies uit. | Macro's worden altijd uitgebreid. |
Automatisering | De korte functies, gedefinieerd binnen de klasse, worden automatisch gemaakt in inline functies. | Macro's moeten specifiek worden gedefinieerd. |
Toegang | Een inline-ledenfunctie heeft toegang tot de gegevensleden van de klasse. | Macro's kunnen nooit lid zijn van de klas en hebben geen toegang tot de gegevensleden van de klas. |
Beëindiging | De definitie van de inline-functie eindigt met de accolades aan het einde van de inline-functie. | Definitie van macro eindigt met de nieuwe regel. |
Debugging | Foutopsporing is eenvoudig voor een inline-functie omdat foutcontrole wordt uitgevoerd tijdens het compileren. | Foutopsporing wordt moeilijk voor macro's omdat foutcontrole niet optreedt tijdens het compileren. |
Verbindend | Een inline-functie bindt alle uitspraken in het lichaam van de functie zeer goed, aangezien het lichaam van de functie begint en eindigt met de accolades. | Een macro wordt geconfronteerd met het bindingsprobleem als deze meer dan één instructie bevat, omdat deze geen beëindigingssymbool heeft. |
Definitie van Inline
Een inline-functie ziet eruit als een normale functie, maar wordt voorafgegaan door het trefwoord 'in lijn“. Inline-functies zijn functies van korte duur die worden uitgebreid op het punt van aanroep, in plaats van te worden aangeroepen. Laten we inline-functies begrijpen met een voorbeeld.
#include In het bovenstaande programma, heb ik de functie initialiseren (), als een inline-functie in de klasse "voorbeeld", aangegeven en gedefinieerd. De code van de initialisatie () functie wordt uitgebreid waar deze wordt aangeroepen door het object van de klasse "example". De functie display (), gedefinieerd in het klassenvoorbeeld, wordt niet inline verklaard maar kan door de compiler als inline worden beschouwd, zoals in C ++ wordt de functie die binnen de klasse is gedefinieerd automatisch inline gemaakt door de compiler, rekening houdend met de lengte van de functie. Macro is een "preprocessors-richtlijn". Voorafgaand aan compilatie wordt het programma onderzocht door de preprocessor en waar het de macro in het programma vindt, vervangt het die macro door zijn definitie. Daarom wordt de macro beschouwd als de "vervanging". Laten we macro bestuderen met een voorbeeld. #include In de bovenstaande code verklaarde ik een macrofunctie GROTER (), die het grootste aantal van beide parameters vergelijkt en vindt. U kunt zien dat er geen puntkomma is om de macro te beëindigen, omdat de macro alleen wordt beëindigd door de nieuwe regel. Aangezien een macro slechts een vervanging is, wordt de macrocode uitgebreid waar deze wordt aangeroepen. De inline-functies zijn veel overtuigender dan de macrofunctie. C ++ biedt ook een betere manier om een constante te definiëren, die een trefwoord "const" gebruikt.
Definitie van Macro
conclusies: