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 に答える