Differenza tra Inline e Macro

In linea vs Macro

C ++ è andato troppo lontano nel campo della programmazione di computer in questi giorni. Essendo un linguaggio potente, a volte diventa un po 'confuso per i programmatori a causa della sua enorme libreria di funzioni. La funzione inline è una di quelle che può essere facilmente confusa con i macro nella lingua.
Non è che ci sia una piccola differenza tra i due, ma possono essere un po 'di confusione a causa delle proprietà che detengono. In questo articolo, discuteremo di più sulle differenze tra funzione inline e macro in C++.

In linea
Una funzione inline è come qualsiasi altra funzione in C ++ e viene anche chiamata in modo regolare. La funzione che esegue è quella di creare una copia della definizione della funzione compilata. Cioè, crea una copia degli elementi definiti da compilare. Un esempio può essere preso se stiamo aggiungendo due numeri interi e lo chiamiamo la funzione inline, il compilatore creerà una copia degli interi da compilare.
Esempio:

Int somma int (int x, int y)

Ritorno (x + y);

macro
Le macro in C ++ implementano la sostituzione del testo in una riga di programma. Cioè, sostituiscono il testo in base alla modifica definita nella funzione. A differenza di inline come funzione, una macro manipola il codice utilizzando una funzione. Per esempio:
#define DOUBLE (X) X * X

int y = 5;
int j = DOUBLE (++ y);

Qui, otterremo il valore di 30! Dato che la chiamata è stata effettuata tramite una macro, "X" è stata sostituita con ++ y che rende ++ y moltiplicato per un altro ++ y. Questo fa un totale di 5 * 6 che è 30 non 6. Sei sarebbe la risposta base ma sbagliata.

Ora, le macro potrebbero causare un bug qui. Quindi una funzione inline viene in soccorso copiando i valori nella memoria del compilatore e quindi compilandolo.

Sommario:

1. Una funzione in linea crea una copia della definizione della funzione.
2. Una macro sostituisce il testo identificato e definito all'interno della funzione.
3. Una funzione inline viene applicata anche quando una macro dovrebbe causare un bug nel programma.