digitalmars.D.learn - asserts in debug and release code
- Justin Johansson (12/12) Nov 04 2009 With respect to the dmd -release compiler switch,
- BCS (4/13) Nov 04 2009 -release turns off asserts and bounds checks
- Justin Johansson (13/28) Nov 04 2009
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 compiler switch and not when using the -release switch (and if neither switch who knows what***) *** And, btw, are -debug and -release mutually exclusive? If one desires asserts to be evaluated only in -debug, is the correct thing to prefix assert with debug as follows? debug assert(cond); Lastly, will assert/switch behaviour change in D2? Thanks for all help, Justin Johansson
Nov 04 2009
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{} sectionscompiler switch and not when using the -release switch (and if neither switch who knows what***)-release turns off asserts and bounds checks*** And, btw, are -debug and -release mutually exclusive?No
Nov 04 2009
BCS Wrote:Hello Justin,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 JustinWith 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{} sectionscompiler switch and not when using the -release switch (and if neither switch who knows what***)-release turns off asserts and bounds checks
Nov 04 2009