Skillnad mellan inline och makro Skillnaden mellan

Anonim

Inline vs Macro

C ++ har gått långt för långt inom datorprogrammering i dessa dagar. Som ett kraftfullt språk blir det ibland lite förvirrande för programmerarna på grund av sitt stora bibliotek av funktioner. Inline-funktionen är en av dem som lätt kan förväxlas med makron på språket.

Det är inte så att det finns en liten skillnad mellan de två, men de kan vara lite förvirrande på grund av de egenskaper de har. I den här artikeln kommer vi att diskutera mer om skillnaderna mellan inline-funktion och makron i C ++.

Inline

En inline-funktion är precis som vilken som helst annan funktion i C ++ och kallas också på vanligt sätt. Funktionen som den utför är att den skapar en kopia av den sammanställda funktionsdefinitionen. Det innebär att det skapar en kopia av de definierade objekten för att kompilera. Ett exempel kan tas om vi lägger till två heltal och kallar det inline-funktionen, kompilatorn kommer att skapa en kopia av de heltal som ska sammanställas.

Exempel:

Inline int summa (int x, int y)

{

Retur (x + y);

}

Makro

Makroer i C ++ implementera textutbyte i en programlinje. Det vill säga, de ersätter text enligt ändringen definierad i funktionen. Till skillnad från inline som en funktion manipulerar ett makro koden med hjälp av en funktion. Till exempel:

#define DOUBLE (X) X * X

int y = 5;

intj = DOUBLE (++ y);

Här får vi värdet som 30! Eftersom anropet har gjorts via ett makro, har "X" ersatts med ++ y som gör att ++ y multipliceras med en annan ++ y. Detta gör totalt 5 * 6 som är 30 inte 6. Sex skulle vara det grundläggande men ett felaktigt svar.

Nu kan makron orsaka ett fel här. Så en inline-funktion kommer till räddningen genom att kopiera värdena till kompilatorns minne och sedan sammanställa den.

Sammanfattning:

1. En inline-funktion skapar en kopia av funktionsdefinitionen.

2. Ett makro ersätter texten som identifierad och definierad inom funktionen.

3. En inline-funktion tillämpas också när ett makro ska orsaka ett fel i programmet.