网上的说法:在展开当前宏时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏
但是在自己的测试当中还是碰到了疑惑,采用VS2019
##修饰的是其后面的那个Token,还是其前面的Token?为何有时展开,有时不展开
#define A(a) 1
#define B(a, b) a##b
#define C(a) #a
#define D(a) 2
#define E(a, b) _##a##b
C(A(a)) //结果为”A(a)“,符合预期
B(A(a),1); //居然返回的是11,不符合预期,为什么A(a)会被展开
B(1,A(a)); //这次居然返回的是1A(a),A(a)又未被展开
B(A(a),A(a)) //返回11,A(a)又被展开了
B(D(a),A(a)) //返回11,D(a)与A(a) 都被展开了
E(A(a),D(a)) //返回_A(a)2,D(a)被展开了
E(A(a),A(a)) //返回_A(a)1,第二个A(a)被展开了