小编KP_*_*P_K的帖子

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

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

我有以下代码:

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

此代码输出"10010"作为答案.

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

所以代码应该是这样的:

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

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

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

c c-preprocessor

6
推荐指数
1
解决办法
1839
查看次数

标签 统计

c ×1

c-preprocessor ×1