不懂啊,C预处理器运算符

代码:

#include <stdio.h>

#define tokenpaster(n) printf ("token" #n " = %d", token##n)

int main(void)
{
    
    
   int token34 = 40;
   
   tokenpaster(34);
   return 0;
}

编译结果:
token34 =40

标记粘贴运算符(##)
宏定义内的标记粘贴运算符(##)会合并两个参数。它允许在宏定义中两个独立的标记被合并为一个标记。
这是怎么发生的,因为这个实例会从编译器产生下列的实际输出:

printf ("token34 = %d", token34);
这个实例演示了 token##n 会连接到 token34 中,在这里,我们使用了字符串常量化运算符(#)和标记粘贴运算符(##)。

不懂不懂
https://www.runoob.com/cprogramming/c-preprocessors.html

猜你喜欢

转载自blog.csdn.net/weixin_42417585/article/details/105185902