宏展开中的一些特殊标记是什么意思?

下面三个宏展开特别有趣。

  1. #define cal(x) take##x
  2. #define cal(x) #@x
  3. #define cal(x) #x

我们给x取值为A,那么上面三个宏展开后得到的结果就是:

  1. takeA
  2. 'A'(字符A)
  3. "A"(字符串A)