Macro en lenguaje C

Macro en lenguaje C
Una macro en el idioma C es un código que se le ha asignado un nombre. Cuando el nombre se usa en cualquier parte del programa, el valor macro se reemplaza antes de la compilación del programa. En este artículo, veremos en detalle cómo escribir una macro en el idioma C.

Considere el siguiente código:

COMENZAR
Entero n = 5;
Imprimir ("El valor de n es %d", n);
FIN

El código anterior no es un código C válido.

Pero el siguiente código es válido:

//Ejemplo 1.C
#define start int main ()
#define End
#Define Integer int
#define imprime (a, b) printf (a, b)
COMENZAR
Entero n = 5;
Imprimir ("El valor de n es %d", n);
FIN

Antes de la compilación, el macro inicio, entero, impresión y final ha sido reemplazado por su valor, y el código se convierte en un código C válido. Podemos comprobar usando el siguiente comando:

GCC -E Ejemplo1.C

Este comando se mostrará después de expandir todas las macros.

Ahora veremos diferentes tipos de macros:

1. Macros similares a objetos:

Sintaxis:

#define macro_name macro_value
  • La macro siempre está comenzando con #define
  • Macro_name es un nombre definido por el usuario de la macro
  • macro_value es el valor de la macro. Puede ser cualquier cosa, pero una línea y el cuerpo macro terminan con los extremos de esa línea. No requiere semicolon (;) al final. El espacio también se considera.

Si la macro toma más de una línea, podemos hacerlo de la siguiente manera:

#define macro_name macro_value1 \
macro_value2 \
macro_value3
#Define Max 200

Esta macro parece un objeto de datos, por eso este tipo de macro llamada macro similar a un objeto.

// Ejemplo2.C
//#incluir
#Define Max 200
int main ()

printf ("El valor máximo es: %d", max);
regresar 0;

En EXAPMLE2.C, max es una macro. Desde la salida, observamos que Máximo se reemplaza por su valor 200.

2. Macros similares a la función:

Sintaxis:

#define macro_name () macro_value

Macro_Name es un nombre definido por el usuario de la macro. Par de paréntesis tiene que poner después del Macro_Name. No se permite espacio entre Macro_Name y paréntesis. También podemos aprobar argumentos en este tipo de macros.

#define add (x, y) x+y

Esta macro se parece a una llamada de función, por eso este tipo de macro llamó macro similar a una función.

// Ejemplo3.C
#define add (x, y) x+y
int main ()

int a;
flotante B;
a = add (4,5);
b = agregar (2.5,3.6)
regresar 0;

En el ejemplo3.C, Hemos visto que, a diferencia de la función de C, la macro reemplaza solo el código con argumentos sin calcularlo. Entonces, podemos pasar un tipo de datos diferente usando la misma macro.

Si ponemos un espacio entre el nombre de la macro y el paréntesis, funciona igual que una macro similar a un objeto. A continuación, el ejemplo C ilustra esto.

// Ejemplo4.C
#define add (x, y) x+y
int main ()

int a;
flotante B;
a = add (4,5);
b = agregar (2.5,3.6)

En el ejemplo4.C, hemos visto que el Macro Add se reemplaza por (x, y) x+y . Lo mismo que una macro similar a un objeto.

3. Macro para ficha:
En el lenguaje C, el operador ## se usa para pegar token. Usando este operador, podemos combinar dos tokens válidos en un token válido.
Ejemplo:

// Ejemplo5.C
#define Marge (x, y) x ## y
int main ()

int num = marge (52,34);
regresar 0;

Si intentamos token de pegado que no genera un token válido, el compilador C da un error o advertencia.

// Ejemplo6.C
#define Marge (x, y) x ## y
int main ()

int num = marge (52,+);
regresar 0;

En Ejemplo6.C, Tenemos un mensaje de error porque, después de una combinación de dos tokens, obtenemos un token '52+'inválido'.

4. Macro para Stringing:
En el lenguaje C, el operador # se usa para convertir un parámetro macro en una constante de cadena. Cuando un operador # precede con un parámetro macro, el parámetro se convierte en una cadena literal. Stringing se puede usar para macros similares a objeto y de función.
Ejemplo:

// Ejemplo7.C
#define Stringing (x) #x
int main ()

printf (Stringing (Hello World));
regresar 0;

En Ejemplo7.C Tenemos una cadena "Hola mundo" usando la macro de trituración.

Conclusión:

Este artículo ha aprendido sobre todo tipo de macro Macros con forma de objeto, Macros similares a la función, Macro para ficha, Macro para triturar y macro para triturar en lengua c. Ahora podemos usar una macro en nuestro programa C sin ninguna duda.