我有一个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