OCaml中的条件编译

5
假设我有一个长算法,我想为了调试而选择性地增加详细信息。到目前为止,我只是在代码周围添加了许多if verbose then printf "whatever",但这会强制执行许多无用的测试(如果我不想在详细模式下运行代码的话)。
是否有一种简单的条件编译方式,可以根据设置的标志位来忽略printf行?
例如,在C语言中使用#IFDEF DEBUG printf .. #ENDIF可以实现这样的功能。
1个回答

7

您需要的内容可以在camlp4找到。如果您包含预定义的宏,那么您可以使用-D(和-U取消定义)在命令行上定义标志:

camlp4o pa_macro.cmo -DFOO file.ml

在代码中,它看起来像这样:

let f x = IFDEF FOO THEN x + 1 ELSE x - 1 END;;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接