version(debug)

denizzzka 4denizzz at gmail.com
Sun Oct 7 00:27:31 PDT 2012


On Sunday, 7 October 2012 at 01:20:49 UTC, Jonathan M Davis wrote:
> 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.


I've got a situation that debug information should be placed into 
the class via the constructor. Therefore, when used -debug 
constructor has another arguments list, and its need debug {} 
else {} for ctor calling.


> 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.

Yes.



More information about the Digitalmars-d-learn mailing list