Jac*_*ack 5 ocaml conditional-compilation
假设我有一个很长的算法,我想任选地详细调试它.到目前为止,我只是添加了很多if verbose then printf "whatever"代码,但是如果我不想在详细模式中使用它,这会强制代码执行许多无用的测试.
有没有办法获得一个简单的条件编译,如果设置了一个标志,它可以忽略printf行?
例如,我可以通过使用C来做的事情 #IFDEF DEBUG printf .. #ENDIF
你在寻找什么可以在camlp4找到.如果包含预定义的宏,则可以使用-D(和-U来取消它们)在命令行上定义标志:
camlp4o pa_macro.cmo -DFOO file.ml
Run Code Online (Sandbox Code Playgroud)
在代码中它看起来像这样:
let f x = IFDEF FOO THEN x + 1 ELSE x - 1 END;;
Run Code Online (Sandbox Code Playgroud)