我试图使用警告装饰器([@*ocaml.warning]
)在本地删除关于特定未使用函数的警告,但是我找不到正确的语法(如果有语法的话)。我使用的是OCaml 4.02.1。
在下面的代码中,我有一个dbg
函数,它不是导出的,也从未使用过,但是我想对它保持沉默,警告32 (unused value dbg
)。
我希望在代码的其他地方保持激活警告,以避免意外错误。
我试着在函数周围设置各种装饰器,但警告仍然出现:
A.mli:
val f : unit -> unit
A.ml:
let f () = ()
[@@ocaml.warning "-32"]
let dbg () = () [@ocaml.warning "-32"]
[@@ocaml.warning "-32"]
let bla () = ()
ocamlc -w +a a.mli a.ml
的结果是:
File "a.ml", line 4, characters 4-7:
Warning 32: unused value dbg.
File "a.ml", line 7, characters 4-7:
Warning 32: unused value bla.
请注意,在[@@@ocaml.warning "-32"]
之前添加let dbg
是有效的(它移除警告),但是之后我必须添加[@@@ocaml.warning "+32"]
来重新启用它,这并不理想,因为它启用了警告,即使它们最初没有出现。
例如,如果我然后使用ocamlc a.mli a.ml
编译,这将添加一个不必要的警告。
有办法在本地禁用警告32吗?
发布于 2015-11-05 10:37:12
我相信在OCaml 4.02.3中没有办法阻止个人警告32。
我也有同样的困难,试图压制一个特定的let
的警告(我的警告是39)。票是http://caml.inria.fr/mantis/view.php?id=6677和http://caml.inria.fr/mantis/view.php?id=6586。
到目前为止,您可以使用_
前缀声明这些变量:
let _dbg () = ()
由于变量以_
开头,因此超出了警告32的范围。缺点是,如果代码中实际使用了此类_
前缀值,则没有可用的工具来警告。
https://stackoverflow.com/questions/33541380
复制相似问题