【问题标题】:How to correctly import a macro from a user defined package?如何从用户定义的包中正确导入宏?
【发布时间】:2021-08-30 15:12:42
【问题描述】:

我正在尝试导入在实用程序包中定义的宏,但是当我尝试使用该宏时,我收到一条消息,指出在 UNDEFINED-FUNCTION my-macro 上调用了调试器,并且 my-package:my-macro 是宏,而不是功能。但是,当我调用在同一个包中定义的函数时,我没有收到任何错误。

【问题讨论】:

    标签: package lisp common-lisp asdf


    【解决方案1】:

    宏扩展发生在compile 时间。您的消息表明使用宏的文件是在定义宏时编译的,因此编译器假定未知名称my-macro命名了一个函数(如果您查看编译日志,您应该会看到一条消息)。

    解决方案:require 在使用宏定义的文件中包含宏定义的文件。

    【讨论】:

    • 这是真的,谢谢,我使用的是 asdf,结果是在加载使用该宏的包后,我正在加载带有包定义的文件,我修复了它首先加载包定义。
    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2020-11-27
    • 2017-03-23
    相关资源
    最近更新 更多