simple - Expanda macros dentro de la cadena entre comillas
concatenar comillas dobles en string c# (2)
No puede expandir macros en cadenas, pero puede escribir
#define COLOR "#00ff00"
f("abc "COLOR);
Recuerde que esta concatenación es realizada por el preprocesador C, y es solo una característica para concatenar cadenas simples, no variables, más o menos.
Posible duplicado:
C Macros para crear cadenas
Tengo una función que acepta un argumento de tipo char*
, como f("string");
Si el argumento de cadena está definido por la marcha en la llamada a función, ¿cómo se pueden expandir las macros dentro del cuerpo de cadena?
Por ejemplo:
#define COLOR #00ff00
f("abc COLOR");
sería equivalente a
f("abc #00ff00");
pero en cambio la expansión no se realiza, y la función recibe literalmente un abc COLOR
.
En particular, necesito expandir la macro exactamente a /"#00ff00/"
, de modo que este token citado se concatene con el resto del argumento de cadena pasado a f()
, se incluyen las comillas; es decir, el preprocesador debe terminar su trabajo y recibir al compilador transformando el código de f("abc COLOR");
a f("abc /"#00ff00/"");
#define COLOR "#00ff00"
f("abc "COLOR);