1

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

4

0 回答 0