C 嵌套宏:展开顺序
可能重复:C 嵌套宏:展开顺序,c,macros,C,Macros,可能重复: 我对宏的求值顺序有疑问。对于以下代码,我无法理解输出: #include <stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf("%s\n",h(f(1,2))); printf("%s\n",g(f(1,2))); return 0; } 为什么不在第二次打印中先展开f,然后再展开g?这是宏如何展开的结果,对自引用宏有影响。。。
我对宏的求值顺序有疑问。对于以下代码,我无法理解输出:
#include <stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
printf("%s\n",h(f(1,2)));
printf("%s\n",g(f(1,2)));
return 0;
}
为什么不在第二次打印中先展开f,然后再展开g?这是宏如何展开的结果,对自引用宏有影响。。。这在中得到了很好的详细解释,这个(确切的!)问题在这里被问了不止一次。thnx伙计们…从重复的帖子中得到了我的答案:)
12
f(1,2)