【问题标题】:Erlang: NIFs and dialyzer warningErlang:NIF 和透析器警告
【发布时间】:2014-12-24 02:39:55
【问题描述】:

在实现 NIF 时,Dialyzer 给了我

函数 crc16/1 没有本地返回

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

-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 dialyzer erlang-nif


    【解决方案1】:

    您可以使用专门为此创建的erlang:nif_error/1/2

    【讨论】:

    • 像魅力一样工作.. 感谢您的快速响应
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多