5

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()助けにはなりません)。

これはどのように修正できますか?

4

1 に答える 1

10

erlang:nif_error/1/2そのためだけに作成された which を使用できます。

于 2014-10-28T15:50:21.033 に答える