Expand macro inside string literal

#define STRINGIFY2(X) #X
#define STRINGIFY(X) STRINGIFY2(X)
#define A 2

Then STRINGIFY(A) will give you "2". You can concatenate it with other string literals by putting them side by side.

"I have the number " STRINGIFY(A) "." gives you "I have the number 2.".


No, you cannot do macro expansion INSIDE string literals (i.e. having the preprocessor to look inside literals for macros to expand).

You can have a macro expansion to produce a string literal using the stringify operator (#). But that's a different thing.