Macro es una abreviatura que representa algún código en un lenguaje de programación. Estas macros ayudan a simplificar y reducir el código para evitar redundancia y codificación repetitiva. De modo que los errores también se reducen que ocurren principalmente debido a la codificación repetida. La principal ventaja con respecto a las macros es que convierte el código y realiza un programa de ensamblaje más legible.
Expansión macro
Una macro contiene un nombre, un conjunto de parámetros formales y el cuerpo del código. El nombre macro se usa con el conjunto de parámetros y se reemplaza por una pieza de código que es generada por su cuerpo. Esto forma una expansión macro. Esto permite al programador crear y definir pseudo operaciones, aquellas operaciones que son deseables y aquellas que no se implementan como instrucciones del procesador. Macro tiene una calidad específica en la que escribe el programa automáticamente. El nombre Macro está escrito como es una palabra clave en el código. Actúa como una llamada a esa macro específica, al igual que una llamada de función. Entonces este nombre es reemplazado por algún otro código de macro cuerpo como hemos descrito anteriormente. Este reemplazo de la llamada con la copia procesada es la expansión de la llamada macro. Y también se usa tanto en C como en C ++.
Una vez que se define una macro, no podemos redefinirlo a un valor diferente sin eliminar la primera definición original. Pero es posible redefinir la macro con la misma definición de macros ya definidas. La Directiva #undef es responsable de eliminar la definición de una macro. Una vez que se elimina la definición, ahora podemos redefinir la macro con un valor diferente.
Macros en C++
Hay dos tipos:
Macros con forma de objeto
Las macros similares a objetos no toman ningún argumento. Estos son identificadores que se reemplazan por el valor. Estos se utilizan principalmente para representar valores y constantes numéricas.
#Define PL 3.17
PL es el nombre de la macro que será reemplazado por el valor 3.17.
Macros similares a la función
Estos tipos de macros pueden aceptar argumentos. Estas macros parecen una llamada de función. Por ejemplo, tome un ejemplo en el que Max sea el nombre de la macro.
#define max (a, b) ((a)<(b)?(a): (b))
Las macros generalmente no generan las llamadas de función.En C ++, las funciones en línea son preferibles.
Macros predefinidos
Compilador de Microsoft C/C ++ que tiene macros predefinidas MSVC que dependen del lenguaje C ++, el objetivo de la compilación y las opciones del compilador. MSVC admite macros preprocesador predefinidos requeridos por los estándares ANSI/ISO C99. Estas macros predefinidas no usan argumentos y no se pueden redefinir.
Se pueden usar muchas macros predefinidas en el código fuente/programas C/C ++. Algunos de ellos se describen aquí que se usan más comúnmente.
__Fecha__
La fecha de compilación del programa en el archivo está representada por esta función Macro. La fecha es una cadena para el formato del año del día del día y es un valor constante. Este tipo de macro siempre se define.
__Tiempo__
Representa el tiempo para la traducción de la unidad que está preprocesada. Similar hasta la fecha, tiene un formato específico en el que se escribe horas: minutos: segundos, de la misma manera que se devuelve la hora.
Este tipo de macro también siempre está definido.
__Archivo__
Esto representa el nombre del archivo actual. Se expande a una cadena de personaje literal. Eso asegura que se muestre la ruta que conduce al archivo. Es una macro siempre definida.
__Línea__
Representa el número de línea en el formato entero de una fuente de corriente. Esta macro se define como otros, y su valor se cambia con la ayuda de #line.
Ahora destacaremos algunos ejemplos de __line__c ++ función macro.
__Línea__
Para tener una idea del funcionamiento de esta macro, aquí hemos citado un ejemplo. En primer lugar, se utiliza una biblioteca para la secuencia de entrada y salida. Luego hemos utilizado un registro de errores de función que mantiene el registro de errores. Esto tiene un parámetro para aceptar la línea en forma de una cadena y un mensaje. Esta función mostrará el número de línea con el mensaje que se pasa del programa principal al macro.
#define log (msg) ErrorLog (__line__, msg)
Después de eso, hemos definido una macro. Esto aceptará la cadena de la línea de mensaje de la función principal que ha pasado como un argumento cuando se llama a esta macro. Y de manera similar, la función de registro de errores se llama con línea macro y el mensaje como parámetros. El archivo se guardará con una extensión del .C Archivo del código fuente C. Como tenemos que ver los resultados de la plataforma de Linux, vaya al terminal y aplique los comandos para compilar y ejecutar el archivo. Use un compilador G ++ para C++.
$ g ++ -o f f.C
ps ./F
Puede ver que incluso con los espacios, el número de línea se identifica a través de la línea macro. De este ejemplo, ha visto la funcionalidad de una macro __line__. Pero en el siguiente ejemplo, todas las macros están colectivamente en el programa. Hemos usado 'cout' para imprimir líneas. Cada línea contiene una macro diferente, y ese valor se muestra. Por ejemplo, para la fecha que hemos usado:
Std :: cout << ("Date :%s\n" , __Date) << std ::endl;
Ahora veremos la salida. Puede ver que el nombre del archivo, la fecha de compilación, el tiempo de compilación y el número de línea actual se muestran de manera muy efectiva a través de una sola pieza de código para cada macro.
Usos/ventajas de las macros
Conclusión
'__line__c ++ macro' es un artículo escrito para explicar las funcionalidades básicas de la macro describiendo los tipos y también las macros predefinidas y su tipos. Todas estas funciones se explican con la ayuda de un ejemplo. Las macros se implementan fácilmente y requieren menos tiempo en la compilación de los códigos. Estas características están diseñadas por aquellos programadores que desean crear innovaciones y condiciones utilizando una pequeña pieza de código en el programa de origen base. Para ese propósito, al final, el artículo se acompaña de los usos de la macro en el código fuente y describe cómo son beneficiosos en algunos aspectos.