C++ #和##的区别

##是字符串连接

#是字符串化的意思,把#后面的参数转换成一个字符串

例如:

#define paster( n ) printf( "token " #n" = %d\n ", token##n ) 
所以paster(9);就是相当于 printf("token 9 = %d\n",token9);

再如:

  #include <stdio.h>
  #define f(a,b) a##b
  #define g(a)   #a
  #define h(a) g(a)
 
  int main()
  {
    printf("%s\n",h(f(1,2)));
    printf("%s\n",g(f(1,2)));
    return 0;
  }

运行结果:

12        //h(f(1, 2)) -> h(12) -> g(12) -> "12"
f(1,2)    //g(f(1, 2)) -> "f(1, 2)"

猜你喜欢

转载自blog.csdn.net/daiyunxing0545/article/details/84592674