Inline vs Macro
C ++ ha ido demasiado lejos en el campo de la programación de computadoras 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 puede confundirse fácilmente con macros en el lenguaje.
No es que haya una pequeña diferencia entre los dos, pero pueden ser un poco confusos debido a las propiedades que poseen. 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 la 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 la llamamos función en línea, el compilador creará una copia de los enteros que se compilarán..
Ejemplo:
Inline int sum (int x, int y)
Retorno (x + y);
Macro
Las macros en C ++ implementan el reemplazo de texto en una línea de programa. Es decir, reemplazan el texto de acuerdo con el cambio definido en la función. A diferencia de la función en línea, una macro manipula el código usando una función. Por ejemplo:
# define DOBLE (X) X * X
int y = 5;
int j = DOBLE (++ y);
Aquí, obtendremos el valor como 30! Como la llamada se realizó a través de una macro, “X” se reemplazó 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 pueden estar causando un error aquí. Entonces, una función en línea viene al rescate al copiar los valores en la memoria de los compiladores y luego compilarlos..
Resumen:
1. Una función en línea crea una copia de la definición de la función.
2. Una macro reemplaza el texto como se identifica y define dentro de la función.
3. También se aplica una función en línea cuando se supone que una macro causa un error en el programa.