【发布时间】:2009-11-06 12:38:30
【问题描述】:
代码:
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
main()
{
printf("%s\n",h(f(1,2))); //[case 1]
printf("%s\n",g(f(1,2))); //[case 2]
}
输出:
12
f(1, 2)
为什么两种情况下的输出不一样?
[我理解串联 (a##b) 和字符串转换 (#a) here,但我不明白为什么两种情况下的输出不同。]
【问题讨论】:
-
您使用的是哪个编译器平台。如果这种行为是特定于编译器的,我不会感到惊讶。
-
我在 Windows 上使用
Cygwin gcc。