繁体   English   中英

带哈希的预处理器指令

[英]Preprocessor directive with hash

#define f(g,g2) g##g2
main()
{
int var12=100;
printf("%d",f(var,12));
}

这段代码给出了输出100,但是如果实现了预处理器,则printf将被重写为:

printf("%d",var##12);

然后,输出结果如何?

双哈希##是预处理器的令牌粘贴运算符 printf将被这样重写:

printf("%d",var12); // No double-hash

双数字符号或“令牌粘贴”运算符(##),有时又称为“合并”运算符,在类对象宏和类函数宏中均使用。 它允许将单独的令牌合并为一个令牌,因此不能是宏定义中的第一个或最后一个令牌。

因为f(var, 12)var12代替, var12是您在上一行中声明和分配的变量的名称。 预处理程序指令##将两个参数粘贴在一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM