>第 21 章 预处理>宏定义>宏展开的步骤

原涛 yuantao.cn@gmail.com
2011-07-04 14:23:51

无意中看到有人问关于宏定义的展开,于是上google找答案,看到了这一段论述,同时看到了另外一段论述:http://blog.csdn.net/zjplus/article/details/2309773

显然贵网站关于宏展开的步骤的论述是有问题的。
比如最后一个例子:

#define x 3
#define f(a) f(x * (a))
#undef x
#define x 2
#define g f
#define t(a) a

t(t(g)(0) + t)(1);

为什么要先展开g呢?
如果t(a)的定义是
#define t(a) #a
那按照文中描述的步骤,最终的结果应该是:
”f(2 * (0)) + t“(1)
但结果显然不应该是这样。





someone asdf@asdf.com
2012-06-13 15:28:22

其实这个作者没什么底气,很多参考他根本不承认


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!