【发布时间】:2016-11-05 17:17:37
【问题描述】:
我定义了一个这样的宏:
defmodule Test do
defmacro __using__ do
quote do
require Test
import Test
end
end
defmacro my_macro do
quote do
Gernserver.call() # generic server call from other module
end
end
end
我在正在构建的库中有这段代码。在其他应用程序中测试此库时,我在包含 use Test 的文件上收到编译错误。
错误:exited in: GenServer.call ...exit no process(在 my_macro 调用的行上,更具体地说在 genserver 调用上)。好像genserver没有运行,不是因为是编译时间。
向 using 宏添加一个简单的 Application.ensure_all_started(:lib_name) 似乎可以解决问题。但是话又说回来,在编译时代码不应该运行,对吗?或者这里是我没有看到的东西?也许我不能在宏上使用 genserver 调用?
谢谢。
【问题讨论】:
-
你能贴出你调用这个宏的代码吗?
-
@Dogbert 当然,这里是:gist.github.com/jbernardo95/7f1b6fc604f485af1a237a28ffc5669e