首页 > 解决方案 > 在宏中粘贴运算符

问题描述

我找到了以下代码片段。

#define f(g,g2) g##g2
main() {

    int var12=100;
    printf("%d",f(var,12));

}

我知道这会将 f(var,12) 转换为 var12 。

我的问题是在宏定义中,为什么他们不写以下内容:

#define f(g,g2) gg2

为什么我们需要 ## 来连接文本,而不是自己连接它?

标签: cmacros

解决方案


如果有人写入gg2,预处理器会将其视为单个令牌。预处理器无法理解那是gand的串联g2


推荐阅读