Escriba una macro C PRINT(x) que imprima x

A primera vista, parece que escribir una macro en C que imprima su argumento es un juego de niños. El siguiente programa debería funcionar, es decir, debería imprimir x 

c

#define PRINT(x) (x)
int main()
{
    printf("%s", PRINT(x));
    return 0;
}

Pero generaría un error de compilación porque se desconoce el tipo de datos de x , que el compilador toma como variable. Ahora no parece tan obvio. ¿no es así? Adivina qué, los siguientes tampoco funcionarán 

c

#define PRINT(x) ('x')
#define PRINT(x) ("x")

Pero si conocemos una de las características menos conocidas del lenguaje C, escribir una macro de este tipo es realmente un juego de niños. 🙂 En C, hay una directiva #, también llamada ‘Operador de string’, que hace esta magia. Básicamente, la directiva # convierte su argumento en una string. ¡Voila! es tan simple hacer el resto. Entonces, el programa anterior se puede modificar como se muestra a continuación. 

c

#include <stdio.h>
#define PRINT(x) (#x)
int main()
{
    printf("%s", PRINT(x));
    return 0;
}

Ahora, si la entrada es PRINT(x) , imprimiría x . De hecho, si la entrada es PRINT(geeks) , imprimiría geeks . Puede encontrar los detalles de esta directiva en el portal de Microsoft aquí .

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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