【发布时间】:2021-08-21 16:51:36
【问题描述】:
我找到了以下sn-p的代码。
#define f(g,g2) g##g2
main() {
int var12=100;
printf("%d",f(var,12));
}
我知道这会将 f(var,12) 转换为 var12 。
我的问题是在宏定义中,他们为什么不直接写以下内容:
#define f(g,g2) gg2
为什么我们需要 ## 来连接文本,而不是自己连接它?
【问题讨论】:
-
你可以自己试试。如果您使用 gcc 或 clang,请使用
-E编译并查看预处理器的输出。 -
@Basile:哎呀。也许将 OP 指向该书的特定部分?
-
@RobertHarvey:“yikes”是什么意思?我没有提到的最好的字典(我是法国人)
-
这意味着 OP 可能不需要整本圣经,只需要一两章。