OCaml中的条件编译

时间:2010-09-01 03:43:33

标签: ocaml conditional-compilation

假设我有一个很长的算法,我希望它可以选择详细调试它。到目前为止,我只是在代码周围添加了许多if verbose then printf "whatever"但这会强制代码执行许多无用的测试,如果我不想让它处于详细模式。

有没有办法获得一个简单的条件编译,如果设置了一个标志就可以忽略printf行?

例如,我可以使用#IFDEF DEBUG printf .. #ENDIF

在C中执行某些操作

1 个答案:

答案 0 :(得分:7)

您正在寻找的内容可以在camlp4中找到。如果包含预定义的宏,则可以使用-D(和-U来取消它们)在命令行上定义标志:

camlp4o pa_macro.cmo -DFOO file.ml

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

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