Diferencia entre Inline y Macro en C ++
Contenido
Macro es una instrucción que se expande en el momento de su invocación. Las funciones también se pueden definir, como las macros. Del mismo modo, las funciones en línea también se expanden en el punto de su invocación. Una diferencia principal entre la función en línea y macro es que el funciones en línea se expanden durante Compilacion, y el macros se expanden cuando el programa es procesado por el preprocesador.
Estudiemos la diferencia entre en línea y macro con la ayuda del cuadro comparativo.
- Cuadro comparativo
- Definición
- Diferencias clave
- Conclusión
Cuadro comparativo
Bases para la comparación | En línea | Macro |
---|---|---|
Básico | El compilador analiza las funciones en línea. | Las macros son expandidas por el preprocesador. |
Sintaxis | inline return_type funct_name (parámetros) {. . . } | #define macro_name char_sequence |
Palabras clave utilizadas | en línea | #definir |
Definido | Se puede definir dentro o fuera de la clase. | Siempre se define al inicio del programa. |
Evaluación | Evalúa el argumento solo una vez. | Evalúa el argumento cada vez que se usa en el código. |
Expansión | El compilador puede no estar en línea y expandir todas las funciones. | Las macros siempre se expanden. |
Automatización | Las funciones cortas, definidas dentro de la clase, se convierten automáticamente en funciones en línea. | Las macros deben definirse específicamente. |
Accediendo | Una función de miembro en línea puede acceder a los miembros de datos de la clase. | Las macros nunca pueden ser miembros de la clase y no pueden acceder a los miembros de datos de la clase. |
Terminación | La definición de la función en línea termina con los corchetes al final de la función en línea. | La definición de macro termina con la nueva línea. |
Depuración | La depuración es fácil para una función en línea ya que la verificación de errores se realiza durante la compilación. | La depuración se vuelve difícil para las macros ya que la comprobación de errores no ocurre durante la compilación. |
Unión | Una función en línea une muy bien todas las declaraciones en el cuerpo de la función, ya que el cuerpo de la función comienza y termina con las llaves. | Una macro enfrenta el problema de enlace si tiene más de una declaración, ya que no tiene un símbolo de terminación. |
Definición de en línea
Una función en línea se parece a una función normal pero está precedida por la palabra clave "en línea". Las funciones en línea son funciones de longitud corta que se expanden en el punto de su invocación, en lugar de llamarse. Comprendamos las funciones en línea con un ejemplo.
#incluir En el programa anterior, declaró y definí, la función initialize (), como una función en línea en la clase "ejemplo". El código de la función initialization () se expandirá donde sea invocado por el objeto de la clase "ejemplo". La función display (), definida en el ejemplo de clase no se declara en línea, pero el compilador puede considerarla en línea como en C ++, la función definida dentro de la clase se hace automáticamente en línea por el compilador considerando la longitud de la función. Macro es una "directiva de preprocesadores". Antes de la compilación, el programa es examinado por el preprocesador y cada vez que encuentra la macro en el programa, reemplaza esa macro por su definición. Por lo tanto, la macro se considera como el "reemplazo". Estudiemos macro con un ejemplo. #incluir En el código anterior, declaró una función macro GREATER (), que compara y encuentra el mayor número de ambos parámetros. Puede observar que no hay punto y coma para terminar la macro, ya que la macro se termina solo por la nueva línea. Como una macro es solo un reemplazo, expandirá el código de la macro donde se invoca. Las funciones en línea son mucho más convincentes que la función macro. C ++ también proporciona una mejor manera de definir una constante, que utiliza una palabra clave "const".
Definición de macro
Conclusiones: