CL宏的小感悟
来源:互联网 发布:电信光猫iptv端口连接 编辑:程序博客网 时间:2024/06/07 15:03
虽然书上和实践中告诉我了宏的原理..但很长一段时间压根就没有理解..一直觉得自己理解了..但今天彻底实验一番之后最终了解了一点点宏..
理解宏..就一定要理解宏求值的两个步骤..先预处理..后求值..宏的body本身就是为了预处理而存在的..在预处理阶段进行求值(这种求值完全和普通CL求值一致)..第二步求值的对象是第一步预处理的结果..
看清楚了..第二步(也就是我们普通CL的求值过程)处理的对象是第一步预处理的结果..所以并不是什么宏必须有反引号内容什么的..不是..
(defmacro test () (if t then else)) 也是一个正确的宏..预处理(test)的结果是then..然后第二步继续对then继续求值..就是then的值了..
所以其实宏就是操作生成供正常读取器读取..求值器求值的普通CL代码..这个代码是哪里来的呢?就是第一步预处理的结果..所以同志们..一定要想好宏的求值顺序..来安排自己的操作情况..
我们之所以经常在宏中使用反引号..是因为反引号本身的返回结果就是自身..这为我们生成代码提供了便利..我们可以直接在反引号中写我们预处理之后的代码..这样简化了我们的生成工作..
继续思考中..
- CL宏的小感悟
- 成就感的一点小感悟
- 学习的一些小感悟
- 毕业后的小感悟
- 最近生活的小感悟
- xargs的一些小感悟
- 管理上的小感悟
- 对生活的,小感悟
- 生活的一些小感悟
- 编程的一点小感悟
- 分治法的小感悟
- 小感悟
- 小感悟
- 小感悟
- 小感悟
- 小感悟
- 小感悟
- 小感悟
- 新版mysql+apache+php Linux安装指南
- SQL update 的更新值来源于另外一个表,如何实现?
- php扩展xdebug基本使用
- C#中函数中的可变参数
- mac如何设置从光盘启动
- CL宏的小感悟
- memmove
- 使用jquery实现点击按钮弹出层和点击空白处隐藏层
- UserDefault
- 星期天读书会SRC
- SSH无法连接VMware内Linux及中文乱码问题
- 如何学习算法
- Ganglia
- How to create Http Connection using AsyncTask class?