passing all writefln arguments

Bill Baxter dnewsgroup at billbaxter.com
Thu Mar 20 16:27:48 PDT 2008


Saaa wrote:
> Thanks,
> 
> As I think that changing a variable is easier than changing the compiler 
> line I went with:
> 
> const bool DEBUGG=false;
> 
> static if (DEBUGG == true) {
>  alias writefln dWritefln;
> }
> else {
>  void dWritefln(...) {}
> }

I think you can set debug versions inside a file too.  That way you can 
have the best of both worlds.  Turn it on from the command line, or by 
modifying the file.

debug = DEBUGG;

debug(DEBUGG) {
  alias writefln dWritefln;
}
else {
  void dWritefln(...) {}
}

... at least that works with 'version'.  Not sure if it works with debug 
too.  (If it doesn't I'll file a bug about the inconsistency with 
'version'.)

> Will dWritefln(..){} compile to 'nothing'?
 > I mean, will calling dWritefln when DEBUGG=false take no cpu tick 
(does the
 > compiler see that it does nothing)?


Yes.  See thread entitled "debug()" over in digitalmars.D.
digitalmars.com digitalmars.D:66826
digitalmars.com digitalmars.D:66827

But that may only be with -inline.  Not sure what flags Jarrett used 
when he ran the test.

--bb


More information about the Digitalmars-d-learn mailing list