asserts in debug and release code

Justin Johansson no at spam.com
Wed Nov 4 15:31:49 PST 2009


BCS Wrote:

> Hello Justin,
> 
> > With respect to the dmd -release compiler switch,
> > are assert statements meant to be compiled in release code?
> > Whilst the D1 spec says "The compiler may optionally not evaluate
> > assert expressions at all.",
> > my intuition suggests that asserts would/should be evaluated (i.e.
> > compiled in) when using -debug
> 
> -debug turns on debug{} sections
> 
> > compiler switch and not when using the -release switch (and if neither
> > switch who knows what***)
> 
> -release turns off asserts and bounds checks
 
Thanks BCS for reply.

Initially I thought something was odd as (using Digital Mars D Compiler v1.050)
my asserts were firing even with -release switch but just now realised
had -unittest flicked as well.  So in summary this is the observation:

(no -debug or -release) leaves asserts on (consistent with what you say)
 -debug -release            flicks asserts off (consistent with what you say)
 -unittest -release         leaves asserts on :-)

So -unittest takes precedence over -release wrt asserts.
Okay, that seems reasonable.

beers
Justin




More information about the Digitalmars-d-learn mailing list