在实施 NIF 时,Dialyzer 给了我
函数 crc16/1 没有本地返回
可能是因为我这样做exit在 .erl 模块中(如官方文档推荐):
-module(my_nifs).
-export([crc16/1]).
-on_load(init/0).
init() ->
ok = erlang:load_nif("../nifs/my_nifs", 0).
-spec crc16(_Binary :: binary()) -> non_neg_integer().
crc16(_Binary) ->
exit(nif_library_not_loaded).
...
一般来说,似乎使用exit/1
总是让 Dialyzer 抱怨这个消息(-spec .. -> no_return()
没有帮助)。
如何解决这个问题?
你可以使用erlang:nif_error/1/2 http://www.erlang.org/doc/man/erlang.html#nif_error-1正是为此而创建的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)