There is such a working code:
#include <stdio.h> #define T 50 #define str(s) strk(s) #define strk(s) #s int main () { puts(str(T)); } We know that puts on the prototype cannot output a number, only strings. I did not understand what role these two lines play for outputting a number through a substitution (in our case for T, instead of which an integer will be substituted) from puts:
#define str(s) strk(s) #define strk(s) #s And why do we substitute the function str(s) this function strk(s) with an arbitrary name (instead of str(s) and strk(s) you can write anything and the program will still work without errors)? Finally, what does #s mean in this example?
#symbol in macros ... - avp