从C语言的printf语句中调用宏函数

我在使用printf()语句中理解宏函数调用的使用时遇到了问题.

我有以下代码

#include<stdio.h>
#define f(g,h) g##h
main()
{
    printf("%d",f(100,10));
}

代码输出“10010”作为答案.

我已经知道宏函数调用只是复制粘贴宏函数代码代替调用替换参数.

所以代码应该是这样的:

#include<stdio.h>
#define f(g,100##10);
}

但是当我用替换宏分别执行上面的代码时,我得到一个编译错误.

那么第一个代码如何给出10010作为答案而第二个代码给出了编译错误呢?

解决方法

预处理器连接运算符##在替换宏之前完成.它只能在宏体中使用.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...