Operador de string (#)
Este operador hace que el argumento real correspondiente se incluya entre comillas dobles. El operador #, que generalmente se denomina operador de string , convierte el argumento al que precede en una string entrecomillada. Para obtener más información sobre las directivas de preprocesador, consulte estos
ejemplos:
- El siguiente preprocesador convierte la línea printf(mkstr(geeksforgeeks)); en printf(“geeksforgeeks”);
// CPP program to illustrate (#) operator
#include <stdio.h>
#define mkstr(s) #s
int
main(
void
)
{
printf
(mkstr(geeksforgeeks));
return
0;
}
Producción:
geeksforgeeks
- En este programa, el valor de a se reemplaza por macro.
// CPP program to illustrate (#) operator
#include <iostream>
using
namespace
std;
#define a 8.3297
int
main()
{
cout <<
"Value of a is "
<< a << endl;
return
0;
}
Producción:
Value of a is 8.3297
- Este programa averigua el máximo de dos números usando macro
// CPP program to illustrate (#) operator
#include <iostream>
using
namespace
std;
#define MAX(i, j) (((i) > (j)) ? i : j)
int
main()
{
int
a, b;
a = 250;
b = 25;
cout <<
"The maximum is "
<< MAX(a, b) << endl;
return
0;
}
Producción:
The maximum is 250
Operador de pegado de tokens (##)
Permite que los tokens utilizados como argumentos reales se concatenen para formar otros tokens. A menudo es útil fusionar dos tokens en uno mientras se expanden las macros. Esto se denomina pegado de tokens o concatenación de tokens. El operador de preprocesamiento ‘##’ realiza el pegado de tokens. Cuando se expande una macro, los dos tokens a cada lado de cada operador ‘##’ se combinan en un solo token, que luego reemplaza el ‘##’ y los dos tokens originales en la expansión de la macro.
Ejemplos:
- El preprocesador transforma printf(“%d”, concat(x, y)); en printf(“%d”, xy);
// CPP program to illustrate (##) operator
#include <stdio.h>
#define concat(a, b) a##b
int
main(
void
)
{
int
xy = 30;
printf
(
"%d"
, concat(x, y));
return
0;
}
Producción:
30
Aplicación: ## proporciona una forma de concatenar argumentos reales durante la expansión de macros. Si un parámetro en el texto de reemplazo está junto a un ##, el parámetro se reemplaza por el argumento real, el ## y el espacio en blanco que lo rodea se eliminan y el resultado se vuelve a escanear.
Este artículo es una contribución de Shivani Ghughtyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
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