Idiom for debug printf?

Kris foo at bar.com
Tue Oct 2 00:22:47 PDT 2007


Better to use the recent Trace.format() instead of Stdout, per the post in 
"announce". Alternatively, consider using tango.util.log instead?

- Kris

"Max Samukha" <samukha at voliacable.com.removethis> wrote in message 
news:ldo3g3pbi1tucigvu5fd8reisdh1nd2mvu at 4ax.com...
> On Mon, 01 Oct 2007 20:29:45 +0900, Bill Baxter
> <dnewsgroup at billbaxter.com> wrote:
>
>>BCS wrote:
>>> Reply to Bill,
>>>
>>>> Is there a common idiom for a version-specific printf? Something like:
>>>>
>>>> version(Verbose) {
>>>> alias writefln debugfln;
>>>> }
>>>> else {
>>>> ... what goes here? ...
>>>> }
>>>> The idea is that it should work just like a call to writefln in the
>>>> version=Verbose case, but it should be a complete no-op otherwise
>>>> (meaning it also shouldn't evaluate its arguments).
>>>>
>>>> I thought there was some way to do this with 'lazy' or somesuch, but I
>>>> don't recall the exact syntax.
>>>>
>>>> Thanks,
>>>> --bb
>>>
>>> I don't bother with switching the function out, I just put each debug
>>> line in it's own debug statement.
>>>
>>> my idium of choice is this:
>>>
>>> debug(DebugIdent) writef(__FILE__":("~itoa!(__LINE__)~"): the message to
>>> print\n");
>>
>>Well, I'm not quite so macho, so I'll just stick with the void
>>debugfln(...){}, and say my prayers to the deities of optimization.
>>
>>--bb
> You could use templates:
>
> import tango.io.Stdout;
>
> void debugfln(A...)(A a)
> {
>    version (Verbose) Stdout.format(a).newline;
> }
>
> void main()
> {
>    debugfln("1: {}, 2: {}", 1, 2);
> }
> 




More information about the Digitalmars-d-learn mailing list