simples simple dobles dentro concatenar comillas comilla c macros c-preprocessor c-strings

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);