请教一个关于宏定义的有关问题

请问一个关于宏定义的问题
#define   cat(x,y)   x##y
cat(cat(1,2),3)   为什么通不过??结果应该是什么?


------解决方案--------------------
#define cat(x,y) x##y
cat(cat(1,2),3)
这里:宏调用cat(cat(1,2),3)将被视为没有定义,因为##的存在限制了外部调用的变元的扩展。
我想你使用上面的调用是想得到结果为123,那么你得定义另外一个宏,如下:
#define cat(x,y) x##y
#define xcat(x,y) cat(x,y)
xcat(xcat(1,2),3)
这样就可以得到123这个结果了。

关于 "## "的具体使用和解释你可以看C语言发明人写的 "C程序设计语言(第2版) "的 "附录A.12.3 "节,有详细的说明.