## #use "macro.ml" .## ##. Camlmix.printer := ignore .## Ocaml quotations are delimited by either of the following two character sequences (shown here with an extra # symbol to avoid triggering a quotation): ### or ###. initiate Ocaml interpretation, while ### or .### resume text mode. ###. causes white space to the left to be removed from the output, while .### similarly removes all white space followed by a newline to the right. The delimiters chosen will cause the C comment to be the first line in the output. Two or more # symbols can be placed in the text by adding one extra # character, as seen above. Let's turn printing back on. ## Camlmix.printer := print .## ##..## ## let source = "Makefile" .## /* add some text here: ##= some_text .## - note the newline was ignored! Check whether 2 ###. .### ### A### ###A 3 ####. .#### #### A#### ####A 4 #####. .##### ##### A##### #####A 5 ######. .###### ###### A###### ######A are emitted correctly. */ int main() { int i = ##= string_of_int (3 + 17) (* i.e., 20 *) ##; ##. Camlmix.printer := ignore .## This text will be ignored. ## Camlmix.printer := print .## char* which = "verbatim: ### ##### ### ###= source ####"; ##.(* This text is part of an Ocaml comment. The # symbols in the char assignment above are printed, allbeit with one of each # symbols in a contiguous sequence removed. Note that we allow this comment to produce a newline in the output.*)## return 0; }