For example I have a macro:
#define PRINT(int) printf(#int "%d\n",int)
I kinda know what is the result. But how come #int repersent the whole thing?
I kinda forget this detail. Can anybody kindely give me a hint?
Thanks!
For example I have a macro:
#define PRINT(int) printf(#int "%d\n",int)
I kinda know what is the result. But how come #int repersent the whole thing?
I kinda forget this detail. Can anybody kindely give me a hint?
Thanks!
In this context (applied to a parameter reference in a macro definition), the pound sign means to expand this parameter to the literal text of the argument that was passed to the macro.
In this case, if you call
PRINT(5)
the macro expansion will beprintf("5" "%d\n", 5);
which will print5 5
; not very useful; however if you callPRINT(5+5)
the macro expansion will beprintf("5+5" "%d\n", 5+5);
which will print5+5 10
, a little less trivial.This very example is explained in this tutorial on the C preprocessor (which, incidentally, is the first Google hit for c macro pound sign).
That is a bad choice of name for the macro parameter, but harmless (thanks dreamlax).
Basically if i write like so
It will be replaced as
or
It is a process called Stringification, #int is replaced with a string consisting of its content, 5 -> "5"
"#" can show the name of a variable, it's better to define the macro as this:
and use it like this:
Result shown: