Erlang:NIFs和透析器警告



在实现NIF时,Dialyzer会给我

函数crc16/1没有本地返回

可能是因为我在.ell模块中退出了(就像官方文档推荐的那样):

-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,它就是为此而创建的。

相关内容

  • 没有找到相关文章

最新更新