如何从用户定义的包中正确导入宏?

Posted

技术标签:

【中文标题】如何从用户定义的包中正确导入宏?【英文标题】: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 是宏,而不是功能。但是,当我调用在同一个包中定义的函数时,我没有收到任何错误。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这是真的,谢谢,我使用的是 asdf,结果是在加载使用该宏的包后,我正在加载带有包定义的文件,我修复了它首先加载包定义。

以上是关于如何从用户定义的包中正确导入宏?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在包中使用自定义 USER-Model

如何从我的包用户的导入语句中删除输出文件夹?

如何从包中的兄弟模块导入?

Python:导入包含的包

如何将 .SQLite 正确添加到 App 的包中?

如何从另一个包中只导入一个函数,而不加载整个命名空间