#:会把参数转换为字符串
#define STR(x) #x #define MAX num
STR(MAX) 会被扩展成"MAX"
这样就有一个缺陷,如果入参为宏,并不能打印出宏的值(比如上一个例子,只打印出了MAX,并没有打印出MAX的值)
可以将宏扩展下
#define STRINGIFY(x) #x #define STR(x) STRINGIFY(x) #define MAX num
STR(MAX)会按照以下顺序替换
STR(num)
_STR(num)
"num"
最后输出num