我将在SBCL中使用以下代码示例获得有关f2的未定义函数警告.我是否有可能首先声明f2,就像在C中一样,以避免警告.我用Google搜索,没有任何线索.
(defun f ()
(print (f2)))
(defun f2 ()
(print "f2"))
Run Code Online (Sandbox Code Playgroud)
如果在单个编译单元中定义它之前使用该函数,例如,同一个文件,则编译器不会抱怨未定义的函数(普通load仍然可以,所以首先编译代码!)
(declaim (ftype (function () t) f2)
Run Code Online (Sandbox Code Playgroud)
但是,在已经加载定义的情况下编译使用该函数的文件更有意义.您可以(并且应该!)将asdf用作特定于Lisp的make(1):指定依赖项,以便编译器在编译其用户时具有所有函数的定义.