On Tue, Apr 26, 2011 at 10:18 AM, Stefan Marr <squeak@stefan-marr.de> wrote:

Hi Mariano:

On 26 Apr 2011, at 09:53, Mariano Martinez Peck wrote:

> If I am compiling with -DNDEBUG=1  I expect the asserts() to be evaluating.
NDEBUG is a short form for NO debug, I suppose.
Let me cite the manpage:

>>
If the macro NDEBUG was defined at the moment <assert.h> was last included, the macro assert() generates no code, and hence does nothing at all.
<<

Thus, -DNDEBUG=0 and -DNDEBUG=1, as well as -DNDEBUG=foo have all the same effect: NO DEBUG, no assertions.


Thanks Stefan. In fact, you were right. If I DO NOT define DNDEBUG, assertions. If I define it (with whatever value), no assertions.   Now, I think that I was to naive to understand Eliot's first answer:

"
NDEBUG is a Mac OS X/FreeBSD/Linux flag that controls asserts.  To get asserts working in Cog it was easiest to use this flag.  So if NDEBUG=0 asserts are eliminated and if NDEBUG=1 they are included and cause a warning to be printed to stdout when enabled (via a call to warning).  See platforms/Cross/vm/sqAssert.h.  Hence NDEBUG=0 for production and NDEBUG=1 for debug and assert VMs.
"

So..I should have NOT understood them literal  "Hence NDEBUG=0 for production and NDEBUG=1 for debug"  but  instead that for debug I DO NOT have to define NDEBUG  but I do for production ? 
 
And even more, when Igor said "and so it doesn't matters if it = 1 or = 0
because it is defined, but don't cares which value."  he was correct.


>  And even more, asserta() seems to evaluates always.

I don't know asserta(), I suppose it is `assert always`?
The only thing I can tell you here is, that you probably need to refer to its implementation.


yes

Thanks Stefan

Mariano
 
Best regards
Stefan

--
Stefan Marr
Software Languages Lab
Vrije Universiteit Brussel
Pleinlaan 2 / B-1050 Brussels / Belgium
http://soft.vub.ac.be/~smarr
Phone: +32 2 629 2974
Fax:   +32 2 629 3525




--
Mariano
http://marianopeck.wordpress.com