GenServer呼叫我这样定义一个宏:内宏观
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
我有我建立一个lib这里面的代码。当在另一个应用程序中测试这个库时,我在具有use Test
的文件上出现编译错误。
错误:exited in: GenServer.call ...
exit no process
(在my_macro调用的行上,更具体地说是在genserver调用中)。就好像genserver没有运行,这不是因为它是编译时间。
使用宏将一个简单的Application.ensure_all_started(:lib_name)添加到似乎解决了这个问题。但是,再次,在编译时代码不应该运行,对吗?或者在这里,我没有看到?也许我不能在宏上使用genserver调用?
谢谢。
你能张贴在那里你调用这个宏的代码从? – Dogbert
@Dogbert当然,这里是:https://gist.github.com/jbernardo95/7f1b6fc604f485af1a237a28ffc5669e – jbernardo