Operador de cadena (#)
Este operador prueba que el argumento real correspondiente está entre comillas dobles. El operador #, generalmente conocido como el una cuerda operador, convierte el argumento anterior en una cadena entre comillas. Para obtener más información sobre las directivas de preprocesador, consulte este
Ejemplos:
- El siguiente preprocesador convierte la línea printf(mkstr(geeksforgeeks)); int 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 una 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 encuentra el máximo de dos números usando una 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 adición de signos (##)
Permite aproximar tokens utilizados como argumentos reales para formar otros tokens. A menudo es útil fusionar dos señales en una al expandir macros. Esto se llama pegado de vales o parcheado conjunto de tokens. El operador de preprocesamiento ‘##’ realiza la adición de tokens. Cuando se expande una macro, los dos caracteres a cada lado de cada operador ‘##’ se combinan en un solo carácter, que reemplaza el ‘##’ y los dos caracteres originales en la expansión de la macro.
Ejemplos:
- El preprocesador cambia printf(«%d», concat(x, y)); int 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
Solicitud: El ## proporciona una forma de combinar argumentos reales durante la expansión de macros. Si el texto de reemplazo contiene un parámetro junto a ##, el parámetro se reemplaza con el argumento real, el ## y los espacios en blanco circundantes se eliminan y el resultado se vuelve a analizar.
Este artículo ha sido agregado Shivani Ghughtyal. Si te gusta GeeksforGeeks y quieres contribuir, también puedes escribir un artículo usando contribuya.geeksforgeeks.org o publique su artículo en contribuya@geeksforgeeks.org. Vea su artículo destacado en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba un comentario si encuentra algún problema o si desea compartir más información sobre el tema tratado anteriormente.