Possible Duplicate:
C Macros to create strings
I have a function which accepts one argument of type char*
, like f("string");
If the string argument is defined by-the-fly in the function call, how can macros be expanded within the string body?
For example:
#define COLOR #00ff00
f("abc COLOR");
would be equivalent to
f("abc #00ff00");
but instead the expansion is not performed, and the function receives literally abc COLOR
.
In particular, I need to expand the macro to exactly \"#00ff00\"
, so that this quoted token is concatenated with the rest of the string argument passed to f()
, quotes included; that is, the preprocessor has to finish his job and welcome the compiler transforming the code from f("abc COLOR");
to f("abc \"#00ff00\"");
You can't expand macros in strings, but you can write
#define COLOR "#00ff00"
f("abc "COLOR);
Remember that this concatenation is done by the C preprocessor, and is only a feature to concatenate plain strings, not variables or so.