我有一个 ASDF 系统,其中包含以下代码:
;; testproj.asd
(asdf:defsystem #:testproj
:serial t
:components ((:file "testproj")))
;; testproj.lisp
(defpackage #:testproj
(:use #:cl))
(in-package #:testproj)
(defun baz (x) x)
(defun bar ()
(macrolet ((mac ()
(baz 100)))
(mac)))
当我尝试加载它时,SBCL 有时会抱怨在尝试扩展宏时函数 BAZ 未定义,但有时却没有。直接加载 testproj.lisp 时,我似乎无法重现此行为,但我想这并不能证明太多,因为否则我也无法可靠地重现它。我是否做错了什么并导致未定义的行为?这是 ASDF/SBCL 的错误吗?到底是怎么回事?:S