我在理解从printf()语句中调用宏函数的使用时遇到了问题。
我有以下代码:
#include<stdio.h>
#define f(g,h) g##h
main()
{
printf("%d",f(100,10));
}
这段代码的输出结果是"10010"。
我了解到宏函数调用会将宏函数的代码简单粘贴到调用处,并用参数替换。因此,代码应该像这样:
#include<stdio.h>
#define f(g,h) g##h
main()
{
printf("%d",100##10);
}
但是,当我使用替换的宏单独执行上面的代码时,会出现编译错误。
那么第一个代码如何给出10010作为答案,而第二个代码却出现编译错误?
##
确保参数被连接。因此:f(100,10) 被预处理器替换为:10010 - Tomas只在 #define 语句内部有效,并且除非该行以“#define [your stuff here]”开头,否则它“没有效果”,因为“#define”指示编译器特殊处理代码的那一部分。
- ActiveTrayPrntrTagDataStrDrvr