Both pa_macros and cppo have a file-inclusion directive, so you could define your preferred location-reporting macro in a header file. That said, I would personally use the __LOCATION__ macro directly: the less preprocessing stuff the better, and if it "clutters your code" you could restrict your reporting a bit, which may not be a bad thing: having a log full of useless stuff is only a bit better than having no log.
You may also be interested in the existing logging frameworks for OCaml, such as Bolt: http://bolt.x9c.fr/ On Wed, Aug 3, 2011 at 8:04 AM, Anders Fugmann <[email protected]> wrote: > Thanks for the replies, > > Using cppo, would I need to define 'loc' in each file using log, or can it > be defined in another module? > > If not, I guess the alternative is to create a syntax extenstion that will > include Loc.t structure as a parameter to some print function - or add it > manually, but I would like to avoid cluttering the code with __LOCATION__ > everywhere. > > Regards > Anders Fugmann > > > > On 08/02/2011 11:21 PM, Martin Jambon wrote: >> >> On 08/02/11 05:45, Gabriel Scherer wrote: >>> >>> Finally, Martin Jambon also has its own "cppo" tools mimicking cpp, >>> which I suppose doesn't rely on camlp4, and has __FILE__ and __LINE__ >>> macros which may be in a more directly exploitable format. I have >>> never tried it though. See: >>> http://martin.jambon.free.fr/cppo.html >> >> That's correct. Thanks for the plug. >> >> Here is an example: >> >> $ cat loc.ml >> #define loc (Printf.sprintf "File %S, line %i" __FILE__ __LINE__) >> >> print_endline loc;; >> print_endline loc;; >> >> $ ocamlopt -o loc -pp cppo loc.ml; ./loc >> File "loc.ml", line 3 >> File "loc.ml", line 4 >> >> >> >> Martin >> > > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa-roc.inria.fr/wws/info/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > > -- Caml-list mailing list. Subscription management and archives: https://sympa-roc.inria.fr/wws/info/caml-list Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
