Complete.Org: Mailing Lists: Archives: freeciv-dev: February 2002:
[Freeciv-Dev] Re: warnings when compiling with NDEBUG (PR#1216)
Home

[Freeciv-Dev] Re: warnings when compiling with NDEBUG (PR#1216)

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Freeciv-Dev <freeciv-dev@xxxxxxxxxxx>
Subject: [Freeciv-Dev] Re: warnings when compiling with NDEBUG (PR#1216)
From: Reinier Post <rp@xxxxxxxxxx>
Date: Tue, 5 Feb 2002 16:26:35 +0100

On Mon, Feb 04, 2002 at 08:13:38PM -0500, Jason Short wrote:

[...]

> >>>>NDEBUG disables assert which should make freeciv faster. I'm not sure
> >>>>how much. So I don't see the benefit of removing it.
> >>>>
> >>>The name is confusing (it appears to mean !DEBUG).
> >>>
> >>    Not much we can do about that, as (according to the assert 
> >>manpage) NDEBUG is defined to have this assert-disabling behaviour in the 
> >>ANSI C spec.
> > 
> > Thanks.  I didn't even know NDEBUG is standard ANSI C (see
> > 
> >   http://www.lysator.liu.se/c/rat/d2.html
> > 
> > ) now I wonder if anything is assumed about DEBUG in ANSI C.
> > Searching for that, I found
> > 
> >   http://users.powernet.co.uk/eton/unleashed/errata/ech07.html
> > 
> > which describes the problem exactly.  Guides such as
> > 
> >   http://www.dpunkt.de/leseproben/3-932588-67-3/Kapitel%207.pdf
> > 
> > suggest to use DEBUG for debug levels, which is what Freeciv does.
> > 
> > So I suppose Freeciv uses NDEBUG and DEBUG in the usual way after all.
> 
> The gist of all that seems to be that DEBUG == !NDEBUG.

No, the gist of it is that DEBUG is *not* !NDEBUG, but instead, is used
as an integer for debug levels used in explicit #ifs in the code, while
NDEBUG has the specific, ANSI-mandated function to turn assert()s off.
Something like

#define NDEBUG (DEBUG < DEBUG_LEVEL_FROM_WHICH_WE_WANT_ASSERTS)

seems reasonable, but I haven't found anything that mandates or
advises this.

> This is not the 
> case in FreeCiv: there is the additional case where neither DEBUG nor 
> NDEBUG are defined.
> 
> My preference would be to drop this third case.  Then either NDEBUG 
> would be defined xor DEBUG would be defined.  configure would take 
> either --enable-debug=yes or --enable-debug=no.

That would mean: only one debug level.

> Not that this really affects the original patch I submitted, since it 
> should be dependent on NDEBUG in any case.
>
> jason

-- 
Reinier


[Prev in Thread] Current Thread [Next in Thread]