directivas expansión de macro (#define, #undef) en lenguaje C

Aquí, vamos a aprender acerca de la programación de macros c , cómo definir y poco a definir una macro , cómo y cuándo se expande macro?

Lo que es macro?

Macros son los nombres de texto / valores literales / cadena (valores constantes) o un fragmento de código, que se expandirán cuando pre-procesador procesa la macro.

Pre-procesador procesa las macros en tiempo de compilación; por lo tanto, que las macros sustituyen con los fragmentos de código correspondientes.

Hay básicamente dos directivas expansión de macro pre-procesador: #define y #undef

1) #define – definir una macro

#define crea / definir una macro.

Definición de una macro sencilla

Una macro definición tiene forma siguiente:

#define macro_name code_fragment

Aquí,

  • #define es un pre-procesador directiva
  • nombre_macro es el nombre de macro
  • code_fragment es la declaración que se compila en el lugar de la macro

Considere este ejemplo

Aquí estamos definiendo tres macros nOMBRE , PI y MAXBUFF con algunos valores constantes

#include<stdio.h>
#define NAME "includhelp.com"
#define PI 3.14
#define MAXBUFF 100
int main()
{
printf("nNAME : %s",NAME);
printf("nPI : %f",PI);
printf("nMAXBUFF : %d",MAXBUFF);
return 0;
}

salida

NAME : includhelp.com
PI : 3.140000
MAXBUFF : 100

Cómo definir una macro complejo con argumento (función como macros)?

Leer: Complejo macro con argumentos (como la función macro) en lenguaje C.

2) #undef – Un definir una macro definida

#unndef directiva se utiliza para definir una macro ONU se define en el código fuente, macro se debe definir si usted está tratando de la ONU que define una macro .

#undef tiene forma siguiente:

#undef defined_macro_name

Considere el ejemplo

Aquí, estamos definiendo una macro MAXBUF , a continuación, definir y redefinir la ONU macro con nuevo valor.


#include <stdio.h>
int main()
{

#define MAXBUFF 100
printf("nMAXBUFF is : %d", MAXBUFF);
#undef MAXBUFF
#define MAXBUFF 200
printf("nMAXBUFF is : %d", MAXBUFF);
return 0;
}

salida

MAXBUFF is : 100
MAXBUFF is : 200


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *