我试图使用警告装饰器([@*ocaml.warning])在本地删除关于特定未使用函数的警告,但是我找不到正确的语法(如果有语法的话)。我使用的是OCaml 4.02.1。
在下面的代码中,我有一个dbg函数,它不是导出的,也从未使用过,但是我想对它保持沉默,警告32 (unused value dbg)。
我希望在代码的其他地方保持激活警告,以避免意外错误。
我试着在函数周围设置各种装饰器,但警告仍然出现:
A.mli:
val f : unit -> unitA.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
复制相似问题