c - 在宏中粘贴运算符
问题描述
我找到了以下代码片段。
#define f(g,g2) g##g2
main() {
int var12=100;
printf("%d",f(var,12));
}
我知道这会将 f(var,12) 转换为 var12 。
我的问题是在宏定义中,为什么他们不写以下内容:
#define f(g,g2) gg2
为什么我们需要 ## 来连接文本,而不是自己连接它?
解决方案
如果有人写入gg2
,预处理器会将其视为单个令牌。预处理器无法理解那是g
and的串联g2
。
推荐阅读
- apache-spark - Spark基于多个重叠窗口聚合单个列
- c# - 我的项目中不存在 ASP.NET appsettings.json
- arrays - 保存用户数据时索引超出范围 - Swift
- react-native - 如何将道具(特别是 id)传递给另一个组件?
- r - 混合模型的残差建模:除了 nlme 之外的任何其他软件包?
- android - 如何解决此错误:系统服务在 onCreate() 之前对活动不可用
- typescript - 根据具有默认值的参数返回 Promise 或布尔值
- angular - 更新组件中的变量后角度不更新
- vb.net - 删除或删除在 PictureBox 上绘制的 Rectangle
- qnamaker - 如何将 QnaMaker 与 oneNote 链接