>第 21 章 预处理>宏定义

bsdwiki bsdwiki@hotmail.com
2009-04-03 16:58:27

整个21章写的太纷乱了,看的是头晕脑胀,能否提炼下,精简下,宏应该不是很复杂的东西,看完觉得人为的复杂化了


宋劲杉 songjinshan@akaedu.org
2009-04-05 10:13:25

和你认为的恰恰相反,宏本来就是很复杂的东西。如果你认为宏不是很复杂的东西,一些复杂的内容可以精简掉,那就达不到我写这本书的初衷了。
任何像模像样的代码中都用到大量的宏,都用到宏的一些复杂的语法特性,都需要彻底理解编译器预处理的步骤才能真正搞清楚。只有在学校里写的hello world才很少用宏。


姚磊 yaolei135@gmail.com
2009-07-22 07:21:52

原文:在定义的前后多些空白(空格、Tab、注释)没有关系,在定义之中多些[空白或少些空白]也没有关系,但在定义之中有空白和没有空白被认为是不同的,所以这样的重复定义是不允许的。

应该是:...,在定义之中多些[注释或少些注释]也没有关系,...


宋劲杉 songjinshan@akaedu.org
2009-07-23 17:06:37

这里的空白包括空格、Tab、注释,而不仅仅是注释,注释在前一步已经被替换成一个空格了,所以在这一步算作空白


姚磊 yaolei135@gmail.com
2009-07-23 21:43:33

明白了,不过这段话的确很难懂,您自己很清楚,但对读者来说却不一定是这样,不妨改成这样:

在定义前后多些空白(包括空格、Tab、注释)没有关系,在定义之中多个空白和一个空白是等价的,但是有空白和没空白却不一样。。。

我的中文也不顺畅,但应该要清楚一些吧。例子中还可以加上一个等价的例子,以便说得更加明白。


宋劲杉 songjinshan@akaedu.org
2009-07-25 16:12:48

你这种说法似乎好一些,我照你这样改吧:)


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