1.#是一个指示符,指示其后面的变量名替换变成一个字符串
#define STRING(x) #x#x#x
#define TEXT(x) "class"#x"Info"
//宏引用:
int abc = 100;
STRING(abc);
TEXT(abc);
//替换结果:
abcabcabc
classabcInfo
2.##操作符在宏定义是连接字符作用
#define CLASS_NAME(name) class##name
#define MERGE(x,y) x##y##x
//宏引用:
CLASS_NAME(Timer)
MERGE(me,To)
//替换结果:
classTimer
meTome
3.#@将单字符标记符变换为单字符,即加单引号
#define B(x) #@x
则B(a)即'a',B(1)即'1',但B(abc)却不甚有效。