Idiom for debug printf?

Max Samukha samukha at voliacable.com.removethis
Mon Oct 1 23:21:36 PDT 2007


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