Ocaml 删除“特定事件”;警告:未使用的值声明“;

Ocaml 删除“特定事件”;警告:未使用的值声明“;,ocaml,Ocaml,我试图使用警告修饰符([@*ocaml.warning])在本地删除有关特定未使用函数的警告,但找不到正确的语法(如果有)。我使用的是OCAML4.02.1 在下面的代码中,我有一个dbg函数,它没有被导出,也从来没有使用过,但是我想为它关闭警告32(未使用的值dbg) 我希望在代码的其他地方保持警告激活,以避免意外错误 我尝试在函数周围放置各种装饰器,但警告仍然出现: A.mli: val f : unit -> unit A.ml: ocamlc-w+a a.mli a.ml导致:

我试图使用警告修饰符(
[@*ocaml.warning]
)在本地删除有关特定未使用函数的警告,但找不到正确的语法(如果有)。我使用的是OCAML4.02.1

在下面的代码中,我有一个
dbg
函数,它没有被导出,也从来没有使用过,但是我想为它关闭警告32(
未使用的值dbg

我希望在代码的其他地方保持警告激活,以避免意外错误

我尝试在函数周围放置各种装饰器,但警告仍然出现:

A.mli:

val f : unit -> unit
A.ml:

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”]
会让dbg
起作用(它会删除警告),但之后我必须添加
[@@ocaml.warning“+32”]
以重新启用它,这并不理想,因为它会启用警告,即使它们最初并不存在

例如,如果我随后使用
ocamlc a.mli a.ml
编译,这将添加一个不需要的警告


有没有办法本地禁用警告32?

我认为在OCaml 4.02.3中没有办法停止单个警告32

我在试图抑制某个特定顶级
let
的警告时遇到了同样的麻烦(我的警告是39)。这张票是免费的

到目前为止,您所能做的是使用
\uu
前缀声明此类变量:

let _dbg () = ()

由于变量以
开头,因此
超出了警告32的范围。缺点是没有可用的工具来警告您的代码中是否实际使用了此类
前缀值。

您能否在问题中写入OCaml的版本号,因为这可能会在将来得到修复。完成,谢谢提醒。您的代码片段实际上在OCaml 4.07中工作,对于一个不应该导出的调试函数,不管怎样,想要
\uu
前缀几乎是有意义的。。。
let _dbg () = ()