GNU's cpp allows you to turn macro parameters into strings like so
#define STR(x) #x
Then, STR(hi)
is substituted with "hi"
But how do you turn a macro (not a macro parameter) into a string?
Say I have a macro CONSTANT with some value e.g.
#define CONSTANT 42
This doesn't work: STR(CONSTANT)
. This yields "CONSTANT"
which is not what we want.
The trick is to define a new macro which calls STR
.
#define STR(str) #str
#define STRING(str) STR(str)
Then STRING(CONSTANT)
yields "42"
as desired.
You need double indirection magic:
#define QUOTE(x) #x
#define STR(x) QUOTE(x)
#define CONSTANT 42
const char * str = STR(CONSTANT);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With