1. 程式人生 > >C++ #和##的區別

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)"