【发布时间】:2011-01-02 19:24:44
【问题描述】:
我在下面有一个 C 程序:
#define f(g,g2) g##g2
main()
{
int var12=100;
printf("%d",f(var,12));
}
当我只运行预处理器时,它会将其扩展为
{
int var12=100;
printf("%d",var12);
}
这就是输出为 100 的原因。
谁能告诉我预处理器如何/为什么扩展var##12 to var12?
【问题讨论】:
-
因为这就是
##在 C 预处理器中的含义。这就像说“为什么i++增加i?”。因为 C 标准是这么说的! -
@Richo....这不是家庭作业。因为我对预处理器不太熟悉,所以我有这个问题。这对你来说可能很容易,看起来像家庭作业.但是对于那些不知道的人来说,这并不容易理解。
-
我确定这一定是重复的,但是在搜索 ## 时,google 和 SO 搜索当然都失败了
标签: c c-preprocessor stringification