version(debug)
Jonathan M Davis
jmdavisProg at gmx.com
Sat Oct 6 18:08:37 PDT 2012
On Saturday, October 06, 2012 23:49:23 denizzzka wrote:
> I am on dmd 2.060
>
> debug {} else {} was not obvious for me - I thought that debug is
> a kind of qualifer.
I wouldn't expect you to try either version(debug) or debug {} without seeing
them in the docs or in TDPL. I suppose that I can see why you would try
version(debug), but it's not listed in the docs.
There isn't really a debug version of anything in D. What debug {} does is
it's compiled in when -debug is compiled in, and that can be used in
conjunction with -release if you want to. So talking about debug vs release in
D is likely to get very confusing. Rather -debug enables debug blocks which
are intended for inserting debug code, _not_ code which is meant for non-
release builds.
It looks like version(assert) (which I guess is only in the github version
right now) will effectively correspond to not having -release, but if there's
ever a compiler flag which specifically enables or disables assertions instead
of -release (which does more than just disable assertions - e.g. it disables
bounds checking in non- at safe code), then it won't actually be guaranteed to
not be there if -release isn't there. It's close enough though I guess,
particularly when the type of stuff that you specifically do in non-release code
is typically the kind of stuff that you want done with assertions are enabled
and probably wouldn't want enable if assertions were turned off, even if that
were to somehow happen without -release.
In any case, -debug and debug{} should be explained in the docs somewhere.
It's certainly not the sort of thing that I would expect you to magically
know.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list