Diferencia entre Inline y Macro

Inline vs Macro

C ++ ha ido demasiado lejos en el campo de la programación informática en estos días. Al ser un lenguaje poderoso, a veces se vuelve un poco confuso para los programadores debido a su enorme biblioteca de funciones. La función en línea es una de ellas que se puede confundir fácilmente con macros en el idioma.
No es que haya una diferencia menor entre los dos, pero pueden ser un poco confusos debido a las propiedades que tienen. En este artículo, discutiremos más sobre las diferencias entre la función en línea y las macros en C ++.

En línea
Una función en línea es como cualquier otra función en C ++ y también se llama de forma regular. La función que realiza es que crea una copia de la definición de función compilada. Es decir, crea una copia de los elementos definidos para compilar. Se puede tomar un ejemplo si estamos agregando dos enteros y lo llamamos función en línea, el compilador creará una copia de los enteros que se compilarán.
Ejemplo:



Suma int en línea (int x, int y)
{
Return (x+y);
}

Macro
Las macros en C ++ implementan el reemplazo de texto en una línea de programa. Es decir, reemplazan el texto según el cambio definido en la función. A diferencia de la función inline, una macro manipula el código mediante una función. Por ejemplo:
#define DOBLE (X) X * X

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

¡Aquí obtendremos el valor de 30! Como la llamada se ha realizado a través de una macro, 'X' se ha reemplazado con ++ y lo que hace que ++ y se multiplique por otro ++ y. Esto hace un total de 5 * 6 que es 30, no 6. Seis sería la respuesta básica pero incorrecta.

Ahora, las macros podrían estar causando un error aquí. Entonces, una función en línea viene al rescate copiando los valores en la memoria de los compiladores y luego compilándolos.

Resumen:

1. Una función en línea crea una copia de la definición de función.
2. Una macro reemplaza el texto identificado y definido dentro de la función.
También se aplica una función en línea cuando se supone que una macro causa un error en el programa.