①“#” 是把跟在后面的参数转成一个字符串
eg:
#define OUTPUT(A) cout << #A << “:”<< (A) << endl;
int main()
{
int a = 1, b = 2;
OUTPUT(a);
OUTPUT(b);
OUTPUT(a+b);
return 0;
}
结果: a:1
b:2
a+b:3
结论:#后面的参数变为字符串
②##是连接符号,把参数连接在一起
eg:
#define FUN(arg) my##arg
则 FUN(ABC)等价于myABC
③##__VA_ARGS__
是一个可变参数的宏,当可变参数的个数为0时,这里的##起到把前面多余的”,”去掉的作用