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