假设我有一个很长的算法,希望对其进行冗长的调试。到目前为止,我只是在代码周围添加了许多if verbose then printf "whatever"
,但是如果我不想在冗长的模式下使用它,这将强制代码执行许多无用的测试。
有没有办法获得一个简单的条件编译,如果设置了一个标志,该条件编译就可以忽略printf行?
例如,我可以通过使用#IFDEF DEBUG printf .. #ENDIF
在C中完成某些操作
最佳答案
您正在寻找的内容可以在camlp4中找到。如果包含预定义的宏,则可以在命令行上使用-D(和-U取消定义它们)来定义标志:
camlp4o pa_macro.cmo -DFOO file.ml
在代码中,它看起来像这样:
let f x = IFDEF FOO THEN x + 1 ELSE x - 1 END;;
关于ocaml - OCaml中的条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3614894/