2010-09-01 17 views
5

Angenommen, ich habe einen langen Algorithmus, den ich gerne ausführlich debuggen würde. Bisher habe ich einfach viele if verbose then printf "whatever" um den Code herum hinzugefügt, aber dies zwingt den Code, viele nutzlose Tests auszuführen, wenn ich ihn nicht im ausführlichen Modus haben will.Bedingte Kompilierung in OCaml

Gibt es eine Möglichkeit, eine einfache bedingte Kompilierung zu erhalten, die die printf-Zeilen ignorieren kann, wenn ein Flag gesetzt ist?

Etwas, das zum Beispiel ich in C tun können #IFDEF DEBUG printf .. #ENDIF

Antwort

7

unter Verwendung Was Sie suchen, können in camlp4 finden. Wenn Sie die vordefinierten Makros enthalten, dann können Sie Flags auf der Kommandozeile mit -D definieren (und -U sie undef):

camlp4o pa_macro.cmo -DFOO file.ml 

Im Code sieht es so aus:

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