![]() |
1
2
宏应该返回源代码,而不是执行。在这里,只有了解
您需要返回一个包含必要说明的列表-这里是调用格式的代码。 这是一本关于Lisp的非常好的书,它还应该解释宏的基础知识: http://www.cs.cmu.edu/~dst/LispBook/ |
![]() |
2
1
你的“函数一”的问题是你通过了
或修复
|
![]() |
3
0
(defparameter 节点错误 t)上 (套x 1) (格式t“x为~a”x);;;生成->x为1 ;;; 要生成相同的版本并准备nodebug版本,需要执行以下操作: ;;; 使用defmacro (defmacro formatdmadv(流字符串&rest allparm) `(格式、流、字符串、@allparm)) (formatdmadv t“formatdmadvx是~a”x);;;生成->x是1<--宏校正 ;;; 或按建议使用defun (formatdf_car t“formatdf_carx是~a”x);;;生成->x是1<--趣味正确 (defun formatdf(流字符串&rest allparm) (apply#'格式(list*流字符串allparm)) (formatdf t“formatdf使用apply x是~a”x);;;生成->x是1<--趣味正确 ;;; ---- 以下内容不正确 (defun formatdf_err(流字符串&rest allparm)(格式化流字符串allparm (formatdf_err t“formatdf_err:x是~a”x);;;生成->x是(1) (defun formatdf_car(流字符串&rest allparm) (格式流字符串(car allparm)) (defmacro formatdm(流字符串&rest allparm) (格式流字符串allparm)) (formatdm t“formatdm x是~a”x);;;生成->x是(x) ;;; ----- 测试结果确认 (pprint(macroexpand-1'(formatdm t“formatdm x是~a”x)) (pprint(宏扩展'(formatdm t“formatdm x是~a”x)) (pprint(macroexpand-1'(formatdm t“formatdm b”c))) ;;; --- 错误的,甚至不生成源代码 (pprint(macroexpand-1'(formatdmadv t“formatdmadvx是~a”x)) (pprint(宏扩展'(formatdmadv t“formatdmadvx是~a”x)) (pprint(macroexpand-1'(formatdmadv t“formatdmadvb”c)) |
![]() |
TSG · 创建定义编译器变量并调用方法的C++宏 8 月前 |
![]() |
Edward Falk · 你能比较C预处理器中的两个常量指针吗? 9 月前 |
![]() |
ma1169 · 宏:不应忽略void值 1 年前 |
![]() |
Bhargav Patil · 运算符的大小并尝试打印数组 1 年前 |
![]() |
David Robie · VIM:寄存器中填充字符断点宏的有向图 1 年前 |
![]() |
Sofia Zaiafarova · 定义宏并使用数据类型查找绝对值 1 年前 |
![]() |
Daniel Muñoz · C[重复]中类宏函数的语法 1 年前 |
![]() |
SupAl · 避免在没有宏的情况下构建对象 1 年前 |