5

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

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

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

4

1 回答 1

7

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

camlp4o pa_macro.cmo -DFOO file.ml

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

let f x = IFDEF FOO THEN x + 1 ELSE x - 1 END;;
于 2010-09-01T03:57:01.347 回答