Erlang:NIF和透析器警告

时间:2014-10-28 15:47:08

标签: erlang dialyzer erlang-nif

实施NIF时,Dialyzer给了我

  

函数crc16 / 1没有本地返回

可能是因为我在.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()无效)。

如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

您可以使用erlang:nif_error/1/2创建的地方。