- 7
- 0
- 约 9页
- 2017-07-24 发布于江苏
- 举报
第 10 章 其他的宏陷阱
第 10 章 其他的宏陷阱
编写宏需要格外⼩⼼。函数被隔离在它⾃⼰的词法世界中,但是宏就另当 论了,因
为它要被展开成进调⽤⽅的代码,所以除⾮仔细编写,否则它将会给⽤户带来意料之
外的不便。第 9 章详细说明了变量捕捉,它是这些不速之客中最常见的⼀个。本章将
讨论在编写宏时需要避免的另外四个问题。
10.1 求值的次数
[⽰例代码 10.1] 控制参数求值
正确的版本:
(defmacro for ((var start stop) body body)
(let ((gstop (gensym)))
(do ((,var ,start (1+ ,var))
(,gstop ,stop))
(( ,var ,gstop))
,@body)))
导致多重求值:
(defmacro for ((var start stop) body body)
(do ((,var ,start (1+ ,var)))
(( ,var ,stop))
,@body))
错误的求值顺序:
(defmacro for ((var start stop) body body)
(let ((gstop (gensym)))
您可能关注的文档
最近下载
- QYSJ 0001 S-2016 四川省古蔺县羽燊旅游文化发展有限公司 配制酒.pdf VIP
- 《旅游文化学》---酒文化.ppt VIP
- 旅游文化-饮食文化资料.ppt VIP
- 初中生物人教七年级下册第四单元生物圈中的人-神经调节的基本方式(说课).ppt
- 《资治通鉴》的读后感范文1000字(精选20篇).docx VIP
- 神经调节的基本方式说课1.ppt VIP
- 旅游景区(点)道路通指引标志设置规范.doc VIP
- 湖北省初中生物说课比赛讲义—《神经调节基本方式》.ppt VIP
- (正式版)DB65∕T 4828-2024 《和田玉(子料)鉴定》.docx VIP
- 【701】〖04D701-1〗电气竖井设备安装.PDF VIP
原创力文档

文档评论(0)